Introduction
Contents
Introduction#
Eléments de vocabulaire#
On définit ici de manière informelle les termes utilisés dans la suite :
Population : ensemble de cardinalité finie, notée \(N\), ou infinie ;
Echantillon : sous-ensemble de la population, de cardinalité \(n\) ;
Individu : sous-ensemble de la population ou de l’échantillon, de cardinalité 1 ;
Caractère : nature de la caractéristique à laquelle on s’intéresse statistiquement. Il peut être qualitatif (nominal ou ordinal) ou quantitatif (discret ou continu).
Probabilités et statistiques#
La question qui se pose est la suivante : comment définir ou estimer la valeur de probabilité associée à un évènement ? Plusieurs points de vue ont été proposés et adoptés que nous synthétisons très brièvement.
Approche fréquentiste#
Ce point de vue historique, souvent présenté comme le plus “naturel” ou “objectif”, consiste à définir une probabilité comme la limite de la fréquence d’observation de la caractéristique lorsque la taille de l’echantillon devient infinie. On suppose ici que les probabilités sont une loi de la nature qu’il faut mesurer par l’expérience. En pratique, la probabilité d’un évènement est donc estimée/approximée en répétant un très grand nombre de fois l’expérience dans les mêmes conditions. C’est de ces expériences répétées que sont nés les outils de la statistique tels que la régression linéaire ou le test du \(\chi^2\). On rencontre néanmoins très rapidement des limitations avec ce type d’approche. D’une part, il est impossible d’un point de vue fréquentiste de traiter de petits échantillons de données. De plus, certains types de données ne sont pas exploitables en raison de leur caractère non expérimental (par exemple, quelle probabilité associer à un évènement du type “nombre de votants aux prochaines élections” qui n’est pas répétable). Enfin, il est parfois difficile de définir un modèle permettant de modéliser une erreur de mesure ou la variation observée d’un caractère dans une population.
Approche bayésienne#
Un point de vue bien différent consiste à définir les probabilités comme une mesure subjective de l’incertitude. Dans ce cadre, tout événement peut être probabilisé à partir d’un a priori de l’observateur. Ce point de vue est appelé Bayésien (fait appel à la règle de Bayes) pour calculer la loi de probabilité des évènements à partir des échantillons de données a posteriori. L’intérêt majeur de ce type de démarche est que tout est probabilisable (jusqu’aux paramètres du modèle utilisé) et qu’il s’appuie sur des résultats de la théorie des probabilités, comme le théorème central limite. Ce point de vue “subjectif” a longtemps été dénoncé par les adeptes de l’approche fréquentiste qui rejettent l’idée que l’on puisse définir un tel a priori sur les évènements. En effet, l’objection majeure que l’on oppose souvent à la méthodologie bayésienne est que deux observateurs différents, ayant des a priori différents, donneront des résultats ou des interprétations différentes.
Démarche générale#
De manière assez générale, une étude statistique consiste à obtenir des informations sur un caractère concernant une population de grande taille en s’appuyant sur celles d’un sous-ensemble de taille réduite (l’échantillon), afin le plus souvent d’orienter une décision. Le choix de l’échantillon se fera par tirage avec ou sans remise, par tirage uniforme (“au hasard”) ou non (tirage stratifié dans le cas d’un sondage par exemple, ou selon une loi de probabilité précise si une information a priori est disponible). On estime alors des propriétés d’un caractère de l’échantillon. A partir de ces estimations, on cherche à donner “au mieux” des valeurs aux paramètres correspondant de la population (la moyenne, la variance,…). L’estimation pourra être ponctuelle ou par intervalle de confiance. On pourra également s’intéresser à des tests d’ajustement (ou d’adéquation) à une loi de type donné. La décision, étape finale de l’analyse statistique, se fera par des tests statistiques.
Example 1
Un cuisinier cherche à savoir si sa sauce est suffisamment salée. Après avoir remué sa casserole, il prélève une cuillérée de sauce (l’échantillon). Il la goûte (il estime le caractère salé de l’échantillon). En fonction du résultat, il décide que la casserole de sauce (la population) est suffisamment salée ou pas.
Important
La science des statistiques se décompose donc en :
la statistique descriptive, dont l’objectif est de décrire le caractère d’un échantillon en résumant l’information qu’il contient ;
la statistique inférentielle, dont l’objectif est d’inférer, à partir de l’information recueillie sur l’échantillon, des propriétés valables sur la population, de manière la plus fiable possible.
A cette dichotomie s’ajoute la statistique exploratoire, branche de l’analyse de données, qui cherche à comprendre l’organisation des individus de l’échantillon (existe-t-il des groupes d’individus semblables ? les caractères mesurés sont-ils les plus pertinents ?…)
Nous n’abordons pas dans ce cours la statistique inférentielle.
Rappels de probabilité#
Expérience aléatoire#
Définitions#
Definition 1 (Expérience aléatoire)
Une expérience aléatoire est une expérience dont on ne peut prévoir le résultat a priori. Répétée dans des conditions identiques, elle peut donner lieu à des résultats différents.
Example 2
Le lancé de dé
Les côtes exactes d’une pièce fabriquée dans un atelier
Definition 2 (Issue)
On appelle issue d’une expérience aléatoire l’un des résultats possibles de cette expérience
Definition 3 (Univers des possibles)
On appelle univers des possibles d’une expérience aléatoire l’ensemble \(\Omega\) des issues de cette expérience.
Example 3
Lorsque l’on joue à pile ou face avec une pièce de monnaie, l’expérience a deux issues possibles et \(\Omega = \{P,F\}\).
L’univers des possibles n’est pas défini de manière unique, mais dépend de l’usage de l’experience. Par exemple, pour le lancer de deux dés, on peut être intéressé par :
le résultat du lancer, dans ce cas \(\Omega = \{(1,1), (1,2), \cdots (6,6)\}\)
la somme des deux faces et \(\Omega = [\![2,12]\!]\)
Definition 4 (Evènement)
Etant donnée une expérience aléatoire, un évènement est une assertion vraie ou fausse suivant l’issue de l’expérience. C’est donc un sous-ensemble \(E\) de \(\Omega\).
Example 4
Dans l’expérience du lancer de deux dés, on peut s’intéresser à l’évènement “la somme des deux faces est paire” ou encore “la somme est supérieure à 7”.
Si l’expérience considérée concerne les jobs effectués sur une machine on peut considérer :
\(\Omega=\mathbb{N}\) et l’évènement “le nombre de jobs ne dépasse pas 10” : \(E=[\![0,10]\!]\)
\(\Omega=\mathbb{R}^*\) et l’évènement “le job dure plus de 15 s” et \(E=]15,+\infty[\)
Il existe certains évènements particuliers :
l’évènement dit certain : c’est l’univers des possibles (par exemple “la somme des deux faces d’un lancer de deux dés est inférieure ou égale à 12”)
l’évènement impossible (“la somme des deux faces d’un lancer de deux dés est supérieure ou égale à 20”)
l’évènement simple : tout singleton de \(\Omega\)
l’évènement composé : tout sous-ensemble de \(\Omega\) de cardinalité au moins égale à 2.
Notation et opérations sur les évènements#
Les évènements peuvent être interprétés soit d’un point de vue ensembliste (Diagrammes de Venn), soit de manière équivalente d’un point de vue probabiliste.
Notation |
Interprétation probabiliste |
|---|---|
\(\omega\) |
issue possible, évènement élémentaire |
\(A\) |
évènement |
\(\omega\in A\) |
\(\omega\) réalise \(A\) |
\(A\subset B\) |
\(A\) implique \(B\) |
\(A\cup B\) |
\(A\) ou \(B\) |
\(A\cap B\) |
\(A\) et \(B\) |
\(\bar A\) |
contraire de \(A\) |
\(\emptyset\) |
évènement impossible |
\(\Omega\) |
évènement certain |
\(A\cap B=\emptyset\) |
\(A\) et \(B\) incompatibles |
\(A\setminus B = A\cap \bar B\) |
\(A\) et pas \(B\) |
Probabilités#
Objectif#
L’objectif des probabilités est de donner une mesure à la chance qu’a un évènement de se réaliser lors d’une expérience aléatoire. Pour ce faire, on définit une fonction \(P:\Omega\rightarrow [0,1]\) vérifiant certains axiomes et propriétés.
Definition 5 (Tribu)
Soit \(T\) une famille d’évènements. Pour que \(T\) soit probabilisable, il faut que :
\(\emptyset\in T, \Omega\in T\)
Si \(A_i\) est une suite dans \(T\) alors \(\cup_iA_i\in T\) et \(\cap_iA_i\in T\)
Si \(A\in T\) alors \(\bar A\in T\)
\(T\) est une tribu et \((\Omega,T)\) est un espace probabilisable.
En pratique, on choisit souvent la tribu engendrée par une famille de \(n\) évènements \(A_i\), qui est l’ensemble des parties de \(\Omega\) obtenues en effectuant l’union de \(k\) évènements \(A_i,i\in [\![1,n]\!]\).
Example 5
Dans le cas du lancer d’un dé, \(\Omega = \{1,2,3,4,5,6\}\), et :
la tribu engendrée par la famille d’évènements \(\{\{1,3,5\},\{2,4,6\}\}\) est \(\{\emptyset,\{1,3,5\},\{2,4,6\},\Omega\}\).
la tribu engendrée par la famille d’évènements \(\{\{1\},\{2\},\{3\},\{4\},\{5\},\{6\}\}\) est l’ensemble des parties de \(\Omega\). Plus généralement, si \(\Omega\) est dénombrable, cette tribu est appelée tribu discrète.
On peut également s’intéresser, si \(\Omega=\mathbb R\), à la tribu engendrée par les ouverts de \(\mathbb{R}\), on parle alors de tribu borélienne.
Probabilité#
Axiom 1 (Axiomatique de Kolmogorov)
On appelle probabilité sur \((\Omega,T)\) une application \(P\) de \(T\) dans [0,1] vérifiant :
\((\forall A\in T)\; P(A)\in[0,1]\)
\(P(\Omega)=1\)
Pour toute famille dénombrable \((A_i)\) d’évènements disjoints \(P(\displaystyle\bigcup_i A_i) = \displaystyle\sum_iP(A_i)\)
\((\Omega,T,P)\) est un espace probabilisé.
Property 1
\(P(\emptyset)=0\)
\((\forall A)\; P(\bar A)=1-P(A)\)
\((\forall A,B)\; P(A\setminus B) = P(A)-P(A\bigcap B)\)
\((\forall A,B)\; P(A\bigcup B) = P(A)+P(B)-P(A\bigcap B)\)
\((\forall A,B)\) si \(A\subset B\) alors \(P(A)\leq P(B)\)
Pour toute famille dénombrable \((A_i)\) d’évènements quelconques \(P(\displaystyle\bigcup_i A_i) \leq \displaystyle\sum_iP(A_i)\)
Conditionnement#
Les probabilités conditionnelles intègrent une information supplémentaire sous la forme de l’observation de la réalisation d’un évènement donné.
Definition 6 (Probabilité conditionnelle)
Soit \(B\) un évènement de probabilité non nulle. On appelle probabilité conditionnelle de \(A\) sachant \(B\) le rapport
\(P(A\mid B) = \frac{P(A\bigcap B)}{P(B)}\)
\(P(A\mid B)\) représente la probabilité que \(A\) se réalise sachant que \(B\) est réalisé.
Remarquons que l’on peut écrire \(P(A\bigcap B) = P(A\mid B)P(B) = P(B\mid A)P(A)\).
Example 6
7% des français sont atteints d’un cancer du poumon. 70% des malades sont des fumeurs et 50% des français fument. On recherche la probabilité d’être atteint d’un cancer du poumon lorsque l’on est fumeur. L’évènement \(A\) est “avoir un cancer du poumon”, et \(B\) est “être fumeur”. D’après les données on a \(P(A)\)=0.07, \(P(B)\) = 0.5 et \(P(B\mid A)\) = 0.7. On a alors \(P(A\mid B) = \frac{P(A\bigcap B)}{P(B)}\) avec \(P(A\bigcap B)=P(B\mid A)P(A)\) d’où
\(P(A\mid B)=\frac{P(B\mid A)P(A)}{P(B}\) = 0.098
Indépendance#
Definition 7 (Indépendance)
Deux évènements \(A\) et \(B\) sont dits indépendants si et seulement si \(P(A\mid B) = P(A)\).
On a alors bien évidemment \(P(A\bigcap B) = P(A)P(B)\).
Remark 1
La notion d’indépendance est directement rattachée à \(P\) : \(A\) et \(B\) peuvent être indépendants pour une probabilité donnée, mais pas pour une autre.
On peut généraliser la notion d’indépendance à une famille d’évènements \((A_i)_{i\in[\![1,n]\!]}\) : on dira que les \(A_i\) sont mutuellement indépendants si pour tout \(I\subset [\![1,n]\!]\)
\(P\left (\displaystyle\bigcap_{i\in I} A_i\right ) = \displaystyle\prod_{i\in I} P(A_i)\)
L’indépendance mutuelle est plus forte que l’indépendance deux à deux.
Remark 2
La notion d’indépendance n’est pas une notion purement ensembliste. Deux évènements peuvent être indépendants pour une loi de probabilité et pas pour une autre.
Théorème des probabilités totales#
Theorem 1
Soit \(\{B_i\}\) un système complet d’évènements (qui forment donc une partition de \(\Omega\)). Pour tout évènement \(A\), on peut écrire
\(P(A) = \displaystyle\sum_i P(A\bigcap B_i) = \displaystyle\sum_i P(A| B_i) P(B_i)\)
Règle de Bayes#
A partir de l’égalité \(P(A\bigcap B) = P(A|B)P(B)=P(B|A)P(A)\), on définit la règle de Bayes
\((\forall A,B)\quad P(B|A)=\frac{P(A|B)P(B)}{P(A)}\)
Si \(B_i\) est un système complet d’évènements, on a de plus
\(P(B_i|A)= \frac{P(A|B_i)P(B_i)}{P(A)} = \frac{P(A|B_i)P(B_i)}{\displaystyle\sum_k P(A|B_k)P(B_k)}\)
Example 7
Un fabricant de boulons a trois usines de fabrication situées à Amiens, Besançon et Clermont-Ferrand. Amiens fournit 25% de la production, Besançon 20% et Clermont-Ferrand 55%. Les boulons de 5mm représentent 20% des boulons produits à Amiens, 30% à Besançon et 15% à Clermont-Ferrand. On répond à la question suivante : sachant que le boulon acheté a une taille de 5mm, quelle est la probabilité qu’il soit produit à Clermont-Ferrand ?
On note \(B_1\) (respectivement \(B_2,B_3\)) l’évènement “Le boulon est produit à Amiens (resp. Besançon, Clermont-Ferrand)”. On note également \(A\) l’évènement “Le boulon fait 5mm”. On cherche donc
\(P(B_3|A) = \frac{P(A|B_3)P(B_3)}{P(A)}= \frac{0.15*0.55}{0.1925}=0.428\).
On a calculé dans l’exemple une probabilité a posteriori, c’est à dire sachant une information supplémentaire (le boulon fait 5mm). La prise en compte de cette information modifie la valeur de la probabilité associée à \(B_3\). La théorie des probabilités au travers de l’approche bayésienne est adaptée pour prendre en compte toute information nouvelle.
Variable aléatoire#
Concept de variable aléatoire#
Soit un espace probabilisé \((\Omega, T,P)\).
Definition 8 (Variable aléatoire)
Une variable aléatoire est une application \(X:\Omega\rightarrow E\) (on prendra \(E=\mathbb R\))
Pour obtenir la probabilité d’une valeur quelconque image par \(X\), il suffit de dénombrer les \(\omega\) qui réalisent cette valeur.
Example 8
Si \(\Omega\) = (Pile,Face), on considère la loi de probabilité \(P\) telle que : \((\forall \omega\in\Omega)\; P(\omega)=\frac12\). \(P(X=1)= P(\{Pile\}) = \frac12\).
On dit que l’on transporte la loi de probabilité de \(\Omega\) sur \(E\) par l’application \(X\).
Les éléments de \(E\) sont les réalisations de la variable aléatoire.
Example 9
Si l’expérience consiste à observer le résultat du tirage de deux dés à 6 faces, \(\Omega = \{(1,1), (1,2), \cdots (6,5), (6,6)\}\), on considère la loi de probabilité telle que \((\forall \omega\in\Omega)\; P(\omega)=\frac{1}{36}\).
Si l’application \(X\) réalise la somme des deux éléments de \(\omega\in\Omega\), alors on a par exemple \(P(X=3)= P(\{(1,2),(2,1)\}) = \frac{2}{36}\), ou encore \(P(X=5)= P(\{(1,4),(2,3),(3,2),(4,1)\}) = \frac{4}{36}\).
Variable aléatoire mesurable#
On définit sur \(E\) une tribu \(T'\). \((E,T')\) est alors un espace probabilisable, et tout élément \(B\) de \(T'\) est un évènement. On note alors \(X^{-1}(B) = \{\omega\in\Omega,\; X(\omega)\in B\}\)
Definition 9 (Variable aléatoire mesurable)
Une variable aléatoire \(X\) est dite mesurable si et seulement si : \((\forall B\in T')\; X^{-1}(B)\in T\)
Dans les deux exemples précédents, on a par exemple \(X^{-1}(1)= \{Pile\}\) ou encore \(X^{-1}(3) = \{(1,2),(2,1)\}\) et \(P(X=3)=P(X^{-1}(3)) = \frac{2}{36}\).
On note souvent \(P_X(B) = P(X^{-1}(B))=P(\{\omega / X(\omega)\in B\})\) et on l’appelle probabilité image de \(P\) par \(X\). En calculant la probabilité de chaque réalisation de la variable aléatoire \(X\), on peut en déduire la loi de probabilité (ou distribution) de \(X\).
Pour une variable aléatoire discrète \(X\), la loi de probabilité est donc \(P_X(x_i)= P(X=x_i) = P(\{\omega / X(\omega)=x_i\})\). \(P_X\) est appelée masse ponctuelle.
Pour une variable aléatoire continue \(X\), la loi de probabilité est donc \(f_X(x)dx = P(x\leq X\leq x+dx) = P(\{\omega /x\leq X(\omega)\leq x+dx\})\). \(f_X\) est appelée densité de probabilité.
from math import floor
from random import random
import numpy as np
import matplotlib.pyplot as plt
def tirage():
d1=floor(6*random()+1)
d2=floor(6*random()+1)
return d1+d2 -1
x = np.arange(0,12)+1
f = np.zeros(12)
n=10000
for i in range(n):
f[tirage() ] += 1
f=f/n
plt.plot( x, f, 'o' )
plt.vlines( x, 0, f )
plt.ylim( bottom=0 )
plt.title("Loi de probabilité d'une variable aléatoire discrète")
plt.tight_layout()
plt.show()
Definition 10 (Fonction de répartition)
La fonction de répartition d’une variable aléatoire \(X\) est l’application \(F_X\) de \(\mathbb R\) dans [0,1] telle que \(F_X(x) = P(X\leq x)\).
\(F_X\) est donc monotone croissante, continue à droite et on a en particulier :
\(P(a\leq X\leq b) = F_X(b)-F_X(a)\)
\(P(X>x) = 1-P(X\leq x) = 1-F_X(x)\)
from math import floor
from random import random
import numpy as np
import matplotlib.pyplot as plt
def tirage():
d1=floor(6*random()+1)
d2=floor(6*random()+1)
return d1+d2 -1
x = np.arange(0,12)+1
f = np.zeros(12)
n=10000
for i in range(n):
f[tirage() ] += 1
f=f/n
data = np.arange(0, 14)
fn = np.insert(np.cumsum(f), 0, 0)
plt.figure(figsize=(10,5))
plt.subplot(121)
plt.plot( x, f, 'o' )
plt.vlines( x, 0, f )
plt.ylim( bottom=0 )
plt.title("Distribution")
plt.subplot(122)
plt.hlines(y=fn, xmin=data[:-1], xmax=data[1:],
color='red', zorder=1)
plt.vlines(x=data[1:-1], ymin=fn[:-1], ymax=fn[1:], color='red',
linestyle='dashed', zorder=1)
plt.ylim( bottom=0 )
plt.title("Fonction de répartition")
plt.show()
La notion de variable aléatoire est ainsi une formalisation de la notion de grandeur variant selon le résultat d’une expérience aléatoire. On peut alors préciser et formaliser la définition précédente.
Definition 11 (Variable aléatoire)
Une variable aléatoire est une application mesurable \(X:(\Omega,T,P) \rightarrow (E,T')\)
Remark 3
Si \(E=\mathbb N\), on parle de variable aléatoire (réelle) discrète
Si \(E=\mathbb R\), on parle de variable aléatoire (réelle) continue. \(T'\) est alors la tribu borélienne
Si \(E=\mathbb N^n\) ou \(E=\mathbb R^n\), on parle de vecteur aléatoire de dimension \(n\).
Caractéristiques des variables aléatoires#
Une loi de probabilité est caractérisée par un certain nombre de grandeurs :
sa valeur centrale
sa dispersion
sa forme
Espérance mathématique d’une variable aléatoire#
Definition 12 (Espérance)
Soit \(X\) une variable aléatoire. On définit l’espérance mathématique de \(X\), et on note \(\mathbb E(X)\) par :
\(\mathbb E(X) = \mu_X = \displaystyle\sum_{x_i} x_iP(X=x_i)= \displaystyle\sum_{x_i} x_i P_X(x_i)\) si \(X\) est discrète et si la somme converge.
\(\mathbb E(X) = \mu_X =\int_x xdP(x) = \int_x x f_X(x) dx\) si \(X\) est continue et si l’intégrale converge.
\(\mathbb E(X)\) est la moyenne arithmétique (également notée \(\mu_X\)) des différentes valeurs prises par \(X\) pondérées par leur probabilité.
from scipy.stats import rv_discrete
x = [10, 20, 30]
p = [0.2, 0.3, 0.5]
distribution = rv_discrete(values=(x, p))
print("Espérance : ", distribution.expect())
Espérance : 23.0
from scipy.stats import rv_continuous
from math import exp
a = 3.5
b = 5.5
class distribution_gen(rv_continuous):
def _pdf(self, x):
return 6*exp(-(x - 5)**2)
distribution = distribution_gen()
print("Espérance : ", distribution.expect(lambda x: 1, lb=a, ub=b))
Espérance : 7.904816400226159
On dira que \(X\) est centrée si \(\mathbb{E}(X)=0\).
Example 10
Pour l’expérience d’un lancer de dé à 6 faces : \(\mathbb E(X) = \mu_X = \displaystyle\sum_{i=1}^6 i\frac16 = \frac72\)
Property 2
\((\forall a\in\mathbb{R})\; \mathbb{E}(a)= a\)
\((\forall a\in\mathbb{R})\; \mathbb{E}(aX)= a\mathbb{E}(X)\)
\((\forall a\in\mathbb{R})\; \mathbb{E}(X+a) = \mathbb{E}(X) +a\)
Moment d’une fonction d’une variable aléatoire#
Soit \(\phi\) l’application qui associe à toute variable aléatoire \(X\) la variable aléatoire \(Y=\phi(X)\).
Definition 13 (Moment)
Le moment \(\mathbb{E}[\phi(X)]\) de la fonction \(\phi\) de la variable aléatoire \(X\) est égal à
\(\mathbb{E}[\phi(X)] = \displaystyle\sum_{x_i} \phi(x_i)P_X(x_i)\) si \(X\) est discrète
\(\mathbb{E}[\phi(X)] = \int_x \phi(x) f_X(x)dx\) si \(X\) est continue
Definition 14 (Moment d’ordre \(k\))
Le moment d’ordre \(k\) d’une variable aléatoire \(X\) est égal à :
\(\mathbb{E}(X^k) = \displaystyle\sum_{x_i} x_i^k P_X(x_i)\) si \(X\) est discrète
\( \mathbb{E}(X^k) = \int_x x^k f_X(x)dx\) si \(X\) est continue
Le moment d’ordre \(k\) est donc un cas particulier avec \(Y=X^k\).
Remark 4
L’espérance \(\mathbb{E}(X)\) est le moment d’ordre 1.
Definition 15 (Moment centré d’ordre \(k\))
On appelle moment centré d’ordre \(k\) la quantité \(\mathbb{E}\left [(X-\mathbb{E}(X))^k \right]\)
Ainsi :
pour une variable aléatoire discrète \(X\), \(\mathbb{E}\left [(X-\mathbb{E}(X))^k \right] = \displaystyle\sum_{x_i} (x_i-\mathbb{E}(X))^k P_X(x_i) = \displaystyle\sum_{x_i} (x_i-\mu_X)^k P_X(x_i)\)
pour une variable aléatoire continue \(X\), \(\mathbb{E}\left [(X-\mathbb{E}(X))^k \right] = \int_x (x-\mathbb{E}(X))^k f_X(x)dx = \int_x (x-\mu_X)^k f_X(x)dx\)
Variance d’une variable aléatoire#
Pour \(k\)=2, le moment centré d’ordre 2 est appelé la variance et est noté \(\mathbb{V}(X)\). La racine carrée de la variance est l’écart type et est noté \(\sigma_X\). On a donc \(\sigma_X^2=\mathbb{V}(X)\).
Proposition 1 (Formule de Koenig)
\(\mathbb{V}(X) = \mathbb{E}(X^2)-\mu_X^2\)
En effet, \(\mathbb{E}\left [(X-\mu_X)^2 \right] = \mathbb{E}\left [(X^2-2\mu_XX+\mu_X^2 \right] = \mathbb{E}(X^2)-2\mu_X\mathbb{E}(X)+\mu_X^2\).
from scipy.stats import rv_discrete
x = [10, 20, 30]
p = [0.2, 0.3, 0.5]
distribution = rv_discrete(values=(x, p))
print("Variance : ", distribution.var())
print("Ecart-type : ", distribution.std())
Variance : 61.0
Ecart-type : 7.810249675906654
from scipy.stats import rv_continuous
from math import exp
a = 3.5
b = 5.5
class distribution_gen(rv_continuous):
def _pdf(self, x):
return 6*exp(-(x - 5)**2)
distribution = distribution_gen()
distribution = distribution_gen(a=a, b=b)
print("Variance: ", distribution.var())
print("Ecart-type : ", distribution.std())
Variance: 0.029595913310970445
Ecart-type : 0.1720346282321395
Property 3
\((\forall a,b\in\mathbb{R})\; \mathbb{V}(aX+b)= a^2\mathbb{V}(X)\)
\((\forall a\in\mathbb{R})\; \mathbb{E}\left [(X-a)^2\right ] = \mathbb V(X) +(\mathbb{E}(X)-a)^2\) (théorème de Huygens)
\(\forall k>0\; P(|X-\mathbb{E}(X)|\geq k\sigma_X)\leq \frac{1}{k^2}\) (inégalité de Bienaymé-Tchebychev)
On dira que la variable aléatoire \(X\) est réduite (ou normée) si \(\mathbb{V}(X)=1\).
Moments d’ordre supérieur#
On considère également souvent les moments d’ordre 3 (coefficient d’asymétrie ou skewness) et 4 (coefficient d’applatissement ou kurtosis).
Elements de statistiques#
Dans l’expression “étude statistique”, il faut distinguer :
les données statistiques : suivant l’étude, plusieurs problèmes peuvent être posés :
Recueil des données (brutes) avec notamment le problème des sondages
Nature des données avec éventuellement la transformation des données brutes, notamment pour les séries chronologiques (série corrigée des variations saisonnières)
Organisation des données : il s’agit le plus souvent de résumer l’information par les techniques de la statistique descriptive
le modèle mathématique : une analyse du phénomène étudié doit permettre de traduire les problèmes posés par l’étude dans un langage formel, celui des probabilités. Après avoir fait des choix, des hypothèses sur la loi de probabilité et sur les paramètres de cette loi, on s’efforce de se placer dans un modèle statistique dans lequel des outils théoriques permettent de résoudre un certain nombre de problèmes théoriques. Dans ce modèle théorique, il s’agit de donner une interprétation aux données expérimentales et, souvent, des hypothèses implificatrices de “même loi” et d’indépendance sont faites.
l’analyse statistique : l’utilisation d’outils statistiques adaptés au modèle retenu permet de faire l’interface entre les données statistiques et le modèle théorique choisi pour décrire le phénomène étudié.
L’étude statistique peut alors se traduire sous diverses formes :
préciser le modèle choisi, en estimant les paramètres intervenant dans celui-ci
juger la validité d’hypothèses faites sur ces paramètres qui se traduira non pas en ‘’confirmation d’hypothèses’’, mais en ‘’détecteur d’hypothèses fausses’’
juger l’adéquation du modèle retenu en termes de lois de probabilité avec la même réserve que ci-dessus
Les résultats théoriques devront être interprétés dans le contexte de l’étude en considérant que ces résultats ont été obtenus dans le cadre d’un modèle théorique précis, d’où la nécessité d’une analyse correcte et d’une bonne formalisation. De plus, il faudra prendre en compte les techniques utilisées, qui ne permettent de répondre qu’à des questions précises. Enfin, dans le cas d’une application pratique, il faudra garder à l’esprit que les conclusions auront des conséquences économiques (ou autres).
Echantillon d’une variable aléatoire#
Définition#
Definition 16 (Echantillon)
Soit une variable aléatoire \(X:(\Omega,\mathcal A,P)\mapsto \mathbb{R}\). On appelle \(n\)-échantillon de la variable aléatoire parente \(X\) la donnée de \(n\) variables aléatoires \(X_1\cdots X_n\), définies sur le même espace, indépendantes, ayant même loi que \(X\).
On a donc pour tout \((x_1\cdots x_n)^T\in\mathbb{R}^n\)
\(P(X_1<x_1\cdots X_n<x_n)=P(X_1<x_1)\cdots P(X_n<x_n)=P(X<x_1)\cdots P(X<x_n)\)
On considère alors une expérience aléatoire \(\mathcal E\) décrite par l’intermédiaire de la variable aléatoire \(X\). Considérer un \(n\) échantillon de \(X\) consiste à supposer la possibilité de \(n\) répétitions de l’expérience \(\mathcal E\) dans des conditions identiques, sans interactions entre elles.
Chaque répétition conduit à l’observation d’une valeur prise par \(X\), d’où l’observation de \(n\) valeurs \(x_1\cdots x_n\) à la suite des \(n\) répétitions, considérées comme une valeur effectivement prise par le \(n\)-échantillon \((X_1\cdots X_n)\) de \(X\). Les valeurs \((x_1\cdots x_n)\) relèvent de l’observation : ce sont les données statistiques recueillies à la suite des \(n\) expériences : elles sont appelées réalisation du \(n\)-échantillon.
A noter que les hypothèses de même loi et d’indépendance sont simplificatrices.
Schéma de Bernoulli et modèle binomial#
Si \(\mathcal E\) n’a que deux éventualités possibles (réalisation ou non d’un évènement \(A\)), alors l’expérience peut être décrite par l’intermédiaire d’une variable aléatoire \(X\) (\(\mathbb{1}_A\), fonction indicatrice de \(A\)), de Bernoulli \(X:(\Omega,\mathcal A,P)\mapsto \{0,1\}\) avec \(P(X=1)=P(A)=p\in]0,1[\).
Si \(\mathcal E\) est répétée \(n\) fois dans des conditions identiques, sans interaction entre elles, on considère un \(n\)-échantillon \((X_1\cdots X_n)\) de variable aléatoire parente \(X\). Les valeurs prises par la variable aléatoire \(S_n=X_1+\cdots X_n\) représentent le nombre de réalisations de \(A\) à la suite des \(n\) répétitions. Une telle situation est dite relever du schéma de Bernoulli.
Property 4
\(S_n:(\Omega,\mathcal A,P)\mapsto [\![0,n]\!]\) a une loi binomiale \(\mathcal{B}(n,p)\) :
\(\forall k\in[\![0,n]\!]\; P(S_n=k)=\begin{pmatrix}n\\k\end{pmatrix} p^k (1-p)^{n-k}\)
\(\mathbb{E}(S_n)=np,\; \mathbb{V}(S_n)=np(1-p)\)
En effet, d’après l’indépendance pour toute suite (\(\delta_1\cdots \delta_n\)) avec pour tout \(k\in[\![1,n]\!]\) \(\delta_k\in\{0,1\}\), on a :
\(P(X_1=\delta_1\cdots X_n=\delta_n) = \displaystyle\prod_{k=1}^n P(X_k=\delta_k) = \displaystyle\prod_{k=1}^n P(X=\delta_k)=p^{s_n}(1-p)^{(n-s_n)}\)
avec \(\delta_1+\cdots+ \delta_n=s_n\) , les variables aléatoires ayant même loi de Bernoulli que \(X\).
Le nombre de solutions de \(\delta_1+\cdots+ \delta_n=s_n\) avec \(s_n\in[\![0,n]\!]\) et \(\delta_k\in\{0,1\}\) est \(\begin{pmatrix}s_n\\n\end{pmatrix}\), d’où le résultat.
D’après la linéarité de l’espérance et l’égalité de Bienaymé, on a de plus \(\mathbb{E}(S_n) = \displaystyle\sum_{k=1}^n \mathbb{E}(X_k)=n\mathbb{E}(X)=np\quad \mathbb{V}(S_n)=\displaystyle\sum_{k=1}^n \mathbb{V}(X_k)=n\mathbb{V}(X)=np(1-p)\)
Moyenne et variances empiriques d’un \(n\)-échantillon#
Etant donné un \(n\)-échantillon \((X_1\cdots X_n)\) d’une variable aléatoire parente \(X\), on appelle :
moyenne empirique du \(n\)-échantillon la variable aléatoire
- \[\bar{X}_n=\frac1n \displaystyle\sum_{k=1}^n X_k\]
variance empirique biaisée du \(n\)-échantillon la variable aléatoire (Ne pas confondre avec la variable \(S_n\) du schéma de Bernoulli)
variance empirique non biaisée du \(n\)-échantillon la variable aléatoire
On a bien sûr \((n-1){S'}_n^2=nS_n^2\).
Les valeurs prises par \(\bar{X}_n\) coïncident avec la moyenne expérimentale \(\bar{x}_n\) des données expérimentales \((x_1\cdots x_n)\), réalisation du \(n\)-échantillon. De même pour \(S_n^2\) pour la variance expérimentale.
Property 5
\(\mathbb{E}(\bar{X}_n)= \mathbb{E}(X)=m\; ;\; \mathbb{V}(\bar{X}_n) = \frac{\mathbb{V}(X)}{n}=\frac{\sigma^2}{n}\)
\(\mathbb{E}(S_n^2) = \frac{n-1}{n}\sigma^2\; ;\; \mathbb{E}({S'}_n^2)=\sigma^2\)
Sous l’hypothèse de normalité, \(\mathbb{V}({S'}_n^2)=\frac{2\sigma^4}{n-1}\)
En effet :
Immédiat d’après la linéarité de l’espérance, l’égalité de Bienaymé et la propriété \(\mathbb{V}(\alpha X)=\alpha^2\mathbb{V}(X)\)
\((n-1){S'}_n^2=\displaystyle\sum_{k=1}^n X_k^2-n\bar{X_n^2}\) d’où
\((n-1)\mathbb{E}({S'}_n^2)=\displaystyle\sum_{k=1}^n\mathbb{E}(X_k^2)-n\mathbb{E}(\bar{X_n^2})=n(\sigma^2+m^2)-n\left (\frac{\sigma^2}{n}+m^2 \right )\) et le résultat.
Le dernier point est admis.
Echantillons de variables aléatoires normales#
Les lois de probabilité usuelles sont rappelées en fin de ce chapitre ({ref}`loisusuelles).
Etude d’un \(n\)-échantillon#
Soit un \(n\)-échantillon \(X_1\cdots X_n\) de variable aléatoire parente \(X\) de loi \(\mathcal{N}(m,\sigma)\). On a les résultats suivants :
\(\sqrt{n} \frac{\bar{X}_n-m}{\sigma}\) suit une loi \(\mathcal{N}(0,1)\)
\(\frac{nS_n^2}{\sigma^2} = \frac{(n-1)S'^2_n}{\sigma^2}\) suit une loi \(\chi^2_{n-1}\)
les variables aléatoires \(\bar{X}_n\) et \(S_n^2\) sont indépendantes
\(T=\sqrt{n}\frac{\bar{X}_n-m}{S'_n}=\sqrt{n-1}\frac{\bar{X}_n-m}{S_n}\) suit une loi de Student à \(n-1\) degrés de liberté.
Etude de deux échantillons indépendants#
Soient un \(n\)-échantillon \(X_1\cdots X_n\) de \(X\) de loi \(\mathcal{N}(m_1,\sigma_1)\), un \(m\)-échantillon \(Y_1\cdots Y_m\) de \(Y\) de loi \(\mathcal{N}(m_2,\sigma_2)\), les échantillons étant indépendants. Avec des notations évidentes, on a les résultats suivants :
\(F = \frac{\sigma_2^2 S'^2_n(X)}{\sigma_1^2 S'^2_m(Y)} = \frac{(m-1)n}{(n-1)m}\frac{\sigma_2^2S_n^2(X)}{\sigma_1^2S_m^2(Y)}\) admet une loi de Fisher-Snédécor FS(\(n-1\),\(m-1\))
\(T = \sqrt{\frac{(n+m-2)mn}{m+n}}\frac{(\bar{X}_n-\bar{Y}_m)-(m_1-m_2)}{\sqrt{nS_n^2(X)+mS_m^2(Y)}}\) admet, sous l’hypothèse \(\sigma_1=\sigma_2\), une loi de Student à \((n+m-2)\) degrés de liberté.
Remark 5
Sous l’hypothèse \(\sigma_1=\sigma_2=\sigma\) :
\(\bar{X}_n-\bar{Y}_m\) suit une loi \(\mathcal{N}(m_1-m_2,\sigma\sqrt{\frac1n+\frac1m})\)
\(\frac{nS_n^2(X)}{\sigma^2}+\frac{mS_m^2(Y)}{\sigma^2}\) a une loi \(\chi^2_{n-1+m-1}\).
Loi des grands nombres#
Inégalité de Tchebychev#
Theorem 2
Soit une variable aléatoire \(X\) de moyenne \(m\) et d’écart-type \(\sigma\). Alors :
\((\forall t>0)\; P(|X-m|\geq t)\leq \frac{\sigma^2}{t^2}\quad\textrm{et}\quad (\forall u>0)\; P(\frac{|X-m|}{\sigma}\geq u)\leq \frac{1}{u^2}\)
En effet : Soit \(A=\left \{|X-m|\geq t\right \}\) et \(\mathbb{1}_A(\omega)\) = 1 si \(\omega\in A\), 0 sinon. Alors :
\((\forall \omega\in\Omega)\; |X(\omega)-m|^2\geq |X(\omega)-m|^2\mathbb{1}_A(\omega) \geq t^2\mathbb{1}_A(\omega)\)
L’espérance étant croissante et vérifiant \(\mathbb{E}(\mathbb{1}_A)=P(A)\), on a \(\sigma^2=\mathbb{E}(|X-m|^2)\geq t^2P(A) = t^2P(|X-m|\geq t)\) et le résultat.
Remark 6
Ces inégalités, souvent très grossières et d’intéret essentiellement théorique, n’ont d’utilité que pour \(t>\sigma\) ou \(u>1\) (une probabilité est toujours inférieure à 1). La seconde donne un majorant de la probabilité d’observer des valeurs prises par \(X\) à l’extérieur de l’intervalle \([m-u\sigma,m+u\sigma]\)
Phénomène de régularité statistique#
Considérons plusieurs séquences de 100 lancers d’une pièce de monnaie et notons, pour chaque séquence, la suite \((f_n)_{n\geq 1}\) des fréquences des piles obtenus. Un exemple de simulation avec \(p=0.4\) est proposé dans la figure suivante avec le code ayant servi à la produire.
import numpy as np
from random import random
import matplotlib.pyplot as plt
def experience(n):
p=0.4
f = []
for j in range(n):
if random() <p:
f += [1.]
else:
f+=[0]
f = np.cumsum(f)
for i in range(n):
f[i] = float(f[i])/(i+1)
return(f)
n = 100
plt.figure(figsize=(12,6))
x = np.arange(n)
nb_sequences = 10
for i in range(nb_sequences):
f = experience(n)
plt.plot(x,f)
plt.xlabel('$n$',fontsize=16)
plt.ylabel('$f_n$',fontsize=16)
plt.axhline(y = 0.4, color = 'k', linestyle = '--')
plt.tight_layout()
La fluctuation de la fréquence est importante pour des petites valeurs de \(n\), puis elle s’atténue, pour se stabiliser autour d’une valeur voisine de \(p\).
Cette constatation expérimentale conduit aux remarques suivantes, qui sont précisées dans la suite dans le cadre théorique :
\(f_n\) donne une idée de la valeur de \(p\) avec une plus ou moins grande précision
la probabilité apparaît comme une fréquence limite.
Loi faible des grands nombres#
Theorem 3
Soit \((X_n)_{n\geq 1}\) une suite de variables aléatoires indépendantes, identiquement distribuées (i.i.d) de même loi qu’une variable \(X\), admettant une moyenne \(m\) et un écart-type \(\sigma\). Si \((\bar{X}_n)_{n\geq 1}\) est la suite des moyennes empiriques associée à \((X_n)_{n\geq 1}\) alors
\((\forall t>0)\; \displaystyle\lim_{n\rightarrow\infty} P(|\bar{X}_n-m|\geq t) = 0\)
On dit que la suite converge en probatilité vers \(m\) et on note \(\bar{X}_n\xrightarrow[n\rightarrow\infty]{P} m\)
C’est une conséquence immédiate de l’inégalité de Tchebychev : \(P(|\bar{X}_n-m|\geq t)\leq\frac{\sigma^2}{nt^2}\) puisque \(\mathbb{V}(\bar{X}_n)=\frac{\sigma^2}{n}\)
L’observation des valeurs prises par la moyenne empirique donne une bonne information sur la moyenne théorique \(m\) de \(X\). La précision, au sens ci-dessus, est d’autant meilleure que \(n\) est grand.
Loi forte des grands nombres#
avec les hypothèses précédentes, on peut montrer que
\(P(\{\omega\in\Omega, \displaystyle\lim_{n\rightarrow\infty} \bar{X}_n(\omega)=m\})=1\)
Sauf cas très improbable (avec probabilité nulle), la suite des réalisations \((\bar{x}_n)_{n\geq 1}\) des moyennes expérimentales des mesures converge vers la moyenne théorique \(m\). On dit que la suite \((\bar{X}_n)_{n\geq 1}\) converge presque sûrement vers \(m\) et on note \(\bar{X}_n\xrightarrow[n\rightarrow\infty]{p.s.} m\).
Remark 7
Si \(X=\mathbb{1}_A\) alors \(m=p=P(A)\) et la probabilité de l’évènement \(A\) apparaît comme une fréquence limite.
Approximation de \(\mathcal{B}(n,p)\) par la loi de Poisson \(\mathcal P(\lambda)\)#
Théorème d’analyse#
Theorem 4
Si \(p\) est une fonction de \(n\) telle que \(\displaystyle\lim_{n\rightarrow\infty}np(n)=\lambda>0\), alors pour tout \(k\geq 0\)
\(\displaystyle\lim_{n\rightarrow\infty}\begin{pmatrix}n\\p\end{pmatrix} p^k(1-p)^{n-k} = e^{-\lambda}\frac{\lambda^k}{k!}\)
En effet
\(\begin{pmatrix}n\\p\end{pmatrix} p^k(1-p)^{n-k}=\frac{n(n-1)\cdots (n-k+1)}{k!}p^k(1-p)^{n-k}\)
\(\begin{pmatrix}n\\p\end{pmatrix} p^k(1-p)^{n-k}=\frac{(np)^k}{k!}\displaystyle\prod_{j=0}^k\left (1-\frac{j}{n}\right )(1-p)^{n-k}\)
et le résultat est démontré en remarquant que \(\displaystyle\lim_{n\rightarrow\infty} p(n)=0\).
Application#
Soit \(S_n\) une variable aléatoire de loi \(\mathcal{B}(n,p)\). Lorsque \(n\) est grand (>50) et \(p\) petite (\(np\)<10), on peut approcher la loi de \(S_n\) par une loi de Poisson \(\mathcal P(np)\). On lit alors la valeur correspondante dans la table de la loi de Poisson, pour tout \(k\in[\![0,n]\!]\) \(P(S_n=k)\approx e^{-\lambda}\frac{\lambda^k}{k!}\)
De plus, en remarquant que \(\Sigma_n=n-S_n\) suit \(\mathcal{B}(n,1-p)\), on a
et quand \(n\) est grand (>50) et \(p\) voisin de 1 (\(n(1-p)<10\)) on peut approcher la loi de \(\Sigma_n\) par une loi de Poisson \(\mathcal P(n(1-p))\).
Théorème central limite#
Le T.C.L.#
Theorem 5
Soit une suite \((X_n)_{n\geq 1}\) de variables aléatoires, i.i.d. de même loi qu’une variable parente \(X\), définies sur le même espace \((\Omega,\mathcal A,P)\). On considère la suite des moyennes empiriques \((X_n)_{n\geq 1}\) des \(n\)-échantillons \((X_1\cdots X_n)\).
Si \(X\) admet une moyenne \(m\) et un écart-type \(\sigma\), alors
\((\forall x\in\mathbb{R})\; \displaystyle\lim_{n\rightarrow\infty}P\left (\sqrt{n}\frac{\bar X_n-m}{\sigma} <x\right) = \phi(x)\) où \( \phi(x)\) est la fonction de répartition de la loi normale centrée réduite \(\mathcal{N}(0,1)\).
On dit que \(\left (\sqrt{n}\frac{\bar X_n-m}{\sigma}\right )_{n\geq 1}\) converge en loi vers \(\mathcal{N}(0,1)\).
La figure suivante illustre ce modèle dans le cas où la variable aléatoire parente \(X\) suit un schéma de Bernoulli avec \(P(X = 1)=0.1, P(X=0)=0.9\).

Commentaires#
Pour mesurer une grandeur de valeur inconnue \(m\), il suffit d’une seule mesure lorsqu’il n’y a pas d’erreur expérimentale. Mais les mesures sont toujours entâchées d’erreur et une expérience ou mesure peut être modélisée par une variable aléatoire \(X\) dnot la moyenne théorique \(\mathbb{E}(X)\) est la valeur cherchée \(m\) si les mesures ne sont pas biaisées, c’est-à-dire affectées d’une erreur systématique.
Ayant effectué \(n\) mesures, on a une réalisation d’un \(n\)-échantillon de \(X\) et une valeur observée \(\bar x_n\) de la moyenne empirique \(\bar X_n\). On peut prendre cette valeur comme estimation de \(m\), l’écart \(|\bar x_n-m|\) étant une réalisation de \(|\bar X_n-m|\).
La loi forte des grands nombres justifie cette estimation en supposant \(\mathbb{E}(X)=m\)
L’inégalité de Tchebychev donne une idée grossière de l’écart en terme de probabilité
le théorème central limite donne une évaluation asymptotique de cet écart aléatoire
Dans la pratique, pour \(n\) grand, dans le cadre de ce théorème, on a l’approximation suivante :
\((\forall a<b)\;\;\;\; P\left (a\sqrt{n}\frac{\bar X_n-m}{\sigma} <b\right)\approx \phi(b)-\phi(a)\)
Cas particulier : théorème de Moivre-Laplace#
Theorem 6
Soit \(X=\mathbb{1}_A\) une variable aléatoire de Bernoulli avec \(P(A)=p\). Dans les conditions du théorème central limite la variable \(S_n=\displaystyle\sum_{k=1}^n X_k=n\bar X_n\) suit une loi binomiale \(\mathcal{B}(n,p)\) et
\( (\forall x\in\mathbb{R})\; \displaystyle\lim_{n\rightarrow\infty}P\left (\frac{S_n-np}{\sqrt{np(1-p)}} <x\right) = \phi(x)\)
On peut donc approcher une loi binomiale par une loi normale.
Modèles probabilistes usuels#
On donne ici un catalogue non exhaustif des principaux modèles probabilistes, et leurs principales propriétés. Une illustration graphique des lois correspondantes est proposée dans les figures suivantes.
Lois discrètes#
On considère une variable aléatoire \(X:(\Omega,\mathcal A,P)\mapsto \mathcal D\)
Modèle |
\(\boldsymbol{\mathcal D}\) |
\(\boldsymbol{P(X=k)}\) |
\(\boldsymbol{\mathbb{E}(X)}\) |
\(\boldsymbol{\mathbb{V}(X)}\) |
Utilisation |
|---|---|---|---|---|---|
Bernoulli |
\(\{0,1\}\) |
\(P(X=1)=p,P(X=0)=1-p=q\) |
\(p\) |
\(pq\) |
Expérience ayant 2 éventualités possibles |
Binomiale \(\mathcal{B}(n,p) \) |
\([\![0,n]\!]\) |
\(\begin{pmatrix}n\\k\end{pmatrix}p^k q^{n-k}\) |
\(np\) |
\(npq\) |
Tirage avec remise |
Hypergéométrique, \(\mathcal{H}(m,N,n), m<N\) |
\([\![0,n]\!]\) |
\(\frac{\begin{pmatrix}m\\k\end{pmatrix}\begin{pmatrix}N-m\\n-k\end{pmatrix}}{\begin{pmatrix}N\\n\end{pmatrix}}\) |
\(n\frac{m}{M}\) |
\(\frac{N-n}{N-1}n\frac{m}{N}\frac{N-m}{N}\) |
Tirage sans remise |
Uniforme |
\([\![1,n]\!]\) |
\(\frac1n\) |
\(\frac{n+1}{2}\) |
\(\frac{n2-1}{12}\) |
Equiprobabilité des résultats |
Poisson \(\mathcal{P}(\lambda), \lambda>0\) |
\(\mathbb{N}\) |
\(e^{-\lambda}\frac{\lambda^k}{k!}\) |
\(\lambda\) |
\(\lambda\) |
Files d’attente, Evènements rares |

Modèle de Bernoulli#
from scipy.stats import bernoulli
n = 10 #nombre de répétitions de l'expérience
p = 0.3 # probabilité de succès
print("Moyenne : ", bernoulli.mean(p))
print("Variance: ", bernoulli.var(p))
Moyenne : 0.3
Variance: 0.21
Loi binomiale#
from scipy.stats import binom
n = 10
x = 7
p = 0.2
print("Moyenne : ", binom.mean(n, p))
print("Variance: ", binom.var(n, p))
print("Densité de probabilité : ", binom.pmf(x, n, p))
print("Fonction de répartition : ", binom.cdf(x,n,p))
Moyenne : 2.0
Variance: 1.6
Densité de probabilité : 0.000786432
Fonction de répartition : 0.9999220736
Loi hypergéométrique#
from scipy.stats import hypergeom
x = 2
M = 15
m = 9
n = 5
print("Moyenne : ", hypergeom.mean(M, m, n))
print("Variance: ", hypergeom.var(M, m, n))
print("Densité de probabilité : ", hypergeom.pmf(x, M, m, n))
print("Fonction de répartition : ", hypergeom.cdf(x, M, m, n))
Moyenne : 3.0
Variance: 0.8571428571428571
Densité de probabilité : 0.23976023976023975
Fonction de répartition : 0.28671328671328666
Distribution de Poisson#
from scipy.stats import poisson
x = 1
Lambda = 2/3
print("Moyenne : ", poisson.mean(Lambda))
print("Variance: ", poisson.var(Lambda))
print("Densité de probabilité : ", poisson.pmf(x, Lambda))
print("Fonction de répartition : ", poisson.cdf(x, Lambda))
Moyenne : 0.6666666666666666
Variance: 0.6666666666666666
Densité de probabilité : 0.3422780793550613
Fonction de répartition : 0.8556951983876534
Lois absolument continues#
Modèle |
\(\boldsymbol{\mathcal D}\) |
Densité |
\(\boldsymbol{\mathbb{E}(X)}\) |
\(\boldsymbol{\mathbb{V}(X)}\) |
Utilisation |
|---|---|---|---|---|---|
Uniforme |
\([a,b]\) |
\(f(x)=\frac{1}{b-a}\mathbb{1}_{]a,b[}(x)\) |
\(\frac{b+a}{2}\) |
\(\frac{(b-a)^2}{12}\) |
Pas d’a priori sur la distribution |
Exponentiel \(Exp(\lambda)\)\(\lambda>0\) |
\(\mathbb{R}^+\) |
\(f(x) =\lambda e^{-\lambda x} \mathbb{1}_{x>0}\) |
\(\frac{1}{\lambda}\) |
\(\frac{1}{\lambda^2}\) |
Files d’attente, Durée de vie sans usure |
Pareto \(\alpha>1,x_0>0\) |
\([x_0,+\infty[\) |
\(f(x)=\frac{\alpha-1}{x_0}\left (\frac{x_0}{x} \right )^\alpha \mathbb{1}_{x\geq x_0}\) |
\(\frac{\alpha-1}{\alpha-2}x_0\) \(\alpha>2\) |
\(\frac{(\alpha-1)x_0^2}{(\alpha-3)(\alpha-2)^2}\) \(\alpha>3\) |
Revenu des ménages |
Normale \(\mathcal{N}(m,\sigma)\) |
\(\mathbb{R}\) |
\(f(x)=\frac{1}{\sqrt{2\pi}\sigma}e^{-\frac{(x-m)^2}{2\sigma^2}}\) |
\(m\) |
\(\sigma^2\) |
voir T.C.L. |
Gamma \(\gamma(a,\lambda)\)\(a>0,\lambda>0\) |
\((\mathbb{R}^+)^*\) |
\(f(x) = \frac{\lambda^a}{\Gamma(a)}e^{-\lambda x}x^{a-1}\mathbb{1}_{x>0}\) |
\(\frac{a}{\lambda}\) |
\(\frac{a}{\lambda^2}\) |
|
Khi-deux \(\chi_n^2\) \(n\) degrés liberté |
\(\mathbb{R}\) |
\(f(x, k)=\frac{1}{2^\frac{k}{2}\Gamma(\frac{k}{2})} x^{\frac{k}{2} - 1} e^{-\frac{x}{2}}\) |
\(n\) |
\(2n\) |
Test du khi-deux |
Student \(n\) degrés liberté |
\(\mathbb{R}\) |
\(f(x)=\frac{1}{\sqrt{\pi n}}\frac{\Gamma((n+1)/2)}{\Gamma(n/2)} \left (1+\frac{t^2}{n} \right )^{-\frac{n+1}{2}}\) t>0 |
Test égalité moyenne |
||
Fisher-Snédécor \(n\) et \(m\) degrés liberté |
\((\mathbb{R}^+)^*\) |
\(\frac{\Gamma(\frac{n+m}{2})}{\Gamma(\frac{n}{2})\Gamma(\frac{m}{2})}n^{\frac{n}{2}}m^{\frac{m}{2}}\frac{x^{\frac{n-2}{2}}}{(nx+m)^{\frac{n+m}{2}}}\) |

Modèle uniforme#
from scipy.stats import uniform
x = 2.5
a = 1
b = 5
mean, var = uniform.stats(moments='mv',loc=a,scale=b-1)
print("Espérance: ", mean )
print("Variance: ", var )
print("Densité de probabilité : ", uniform.pdf(x, loc = a, scale = b-1))
print("Fonction de répartition : ", uniform.cdf(x, loc = a, scale = b-1))
Espérance: 3.0
Variance: 1.3333333333333333
Densité de probabilité : 0.25
Fonction de répartition : 0.375
Loi normale#
from scipy.stats import norm
x = 1.3
m = 0
sigma = 1
mean,var = norm.stats(loc = m, scale = sigma, moments='mv')
print("Moyenne : ", mean)
print("Variance : ", var)
print("Densité de probabilité : ", norm.pdf(x, loc = m, scale = sigma))
print("Fonction de répartition : ", norm.cdf(x, loc = m, scale = sigma))
Moyenne : 0.0
Variance : 1.0
Densité de probabilité : 0.17136859204780736
Fonction de répartition : 0.9031995154143897
Sous l’hypothèse de normalité, de nombreux outils statistiques sont disponibles. Souvent, l’hypothèse de normalité est justifiée par l’intermédiaire du théorème centrale limite. Des considérations, parfois abusives, permettent de se placer dans le cadre d’utilisation de ce théorème et de choisir un modèle normal alors qu’une étude des données statistiques met en défaut le choix de ce modèle (problème dit d’adéquation).
Property 6
Si \(X\) est une variable aléatoire de loi \(\mathcal{N}(m,\sigma)\) alors la variable \(Z=\frac{X-m}{\sigma}\) est la variable centrée réduite associée, et suit une loi \(\mathcal{N}(0,1)\) dite aussi loi de Gauss-Laplace.
La fonction de répartition de \(Z\) est \(\phi(Z) = P(Z<z) = \frac{1}{\sqrt{2\pi}}\int_{-\infty}^z e^{-\frac{t^2}{2}}dt\), dont les valeurs peuvent être lues dans une table.
Theorem 7
Soient \(X_1\) et \(X_2\) deux variables aléatoires indépendantes, de loi respective \(\mathcal{N}(m_1,\sigma_1)\) et \(\mathcal{N}(m_2,\sigma_2)\). Alors la variable aléatoire \(X=\alpha_1X_1+\alpha_2X_2\) admet une loi \(\mathcal{N}(m,\sigma)\) avec
\(m = \alpha_1 m_1+\alpha_2 m_2\quad \textrm{et}\quad \sigma_2^2 = \alpha_1^2 \sigma_1+\alpha_2^2 \sigma_2^2\)
En particulier, étant données \(n\) variables aléatoires \(X_1\cdots X_n\) i.i.d. de loi \(\mathcal{N}(m,\sigma)\), alors la variable aléatoire \(\bar X_n = \frac1n \displaystyle\sum_{k=1}^nX_k\) suit une loi normale \(\mathcal{N}(m,\sigma/\sqrt{n})\).
Remark 8
Dans ce cas, \(\sqrt{n}\frac{\bar X_n-m}{\sigma}\) suit une loi \(\mathcal{N}(0,1)\).
Loi exponentielle#
from scipy.stats import expon
Lambda = 0.5
x = 1
mean,var = expon.stats(scale=Lambda, moments='mv')
print("Espérance : ", mean)
print("Variance : ", var)
print("Densité de probabilité : ", expon.pdf(x, scale = Lambda))
print("Fonction de répartition : ", expon.cdf(x, scale = Lambda))
Espérance : 0.5
Variance : 0.25
Densité de probabilité : 0.2706705664732254
Fonction de répartition : 0.8646647167633873
On parle de loi de probabilité sans mémoire car elle vérifie : \( (\forall s,t\in(\mathbb{R}^+)^*\; P(X>s+t |X>t) = P(X>s)\)
Distribution Gamma#
from scipy.stats import gamma
x = 3
a = 3
Lambda = 1.8
mean, var = gamma.stats(a, scale = 1/Lambda, moments='mv')
print("Moyenne : ", mean)
print("Variance : ", var)
print("Densité de probabilité : ", gamma.pdf(x, a, scale = 1/Lambda))
print("Fonction de répartition : ", gamma.cdf(x, a, scale = 1/Lambda))
Moyenne : 1.6666666666666667
Variance : 0.925925925925926
Densité de probabilité : 0.11853315025792688
Fonction de répartition : 0.9052421318239862
Les propriétés de cette loi reposent sur celles de la fonction \(\Gamma(a) = \int_0^{+\infty} x-{a-1}e^{-x}dx\), intégrale convergente pour tout \(a>0\).
Theorem 8
Si \(X\) et \(Y\) sont des variables aléatoires indépendantes de loi respective \(\gamma(a,\lambda)\) et \(\gamma(b,\lambda)\), alors \(X=X_1+X_2\) est de loi \(\gamma(a+b,\lambda)\)
Theorem 9
Si \(X\) est de loi \(\mathcal{N}(0,1)\) alors la variable aléatoire \(Y=X^2\) admet une loi \(\gamma(\frac12,\frac12)\).
Etant données plus généralement \(n\) variables aléatoires i.i.d. de loi \(\mathcal{N}(m,\sigma)\), alors la variable aléatoire \(V=\displaystyle\sum_{k=1}^n \left (\frac{X_k-m}{\sigma}\right )^2\) admet une loi \(\gamma(\frac{n}{2},\frac12)\). C’est la loi du khi-deux à \(n\) degrés de liberté.
Loi du Khi-deux#
from scipy.stats import chi2
x=3
n=2
mean, var = chi2.stats(n, moments='mv')
print("Moyenne : ", mean)
print("Variance : ", var)
print("Densité de probabilité : ", chi2(n).pdf(x))
print("Fonction de répartition : ", chi2(n).cdf(x))
Moyenne : 2.0
Variance : 4.0
Densité de probabilité : 0.11156508007421491
Fonction de répartition : 0.7768698398515702
Loi de Student#
from scipy.stats import t
n = 2
x=3
mean, var = t.stats(n, moments='mv')
print("Moyenne : ", mean)
print("Variance : ", var)
print("Densité de probabilité : ", t(n).pdf(x))
print("Fonction de répartition : ", t(n).cdf(x))
Moyenne : 0.0
Variance : inf
Densité de probabilité : 0.027410122234342152
Fonction de répartition : 0.9522670168666454
L’utilisation pratique de cette loi est énoncée par le théorème suivant :
Theorem 10
Soient deux variables aléatoires \(X\) et \(Y\) indépendantes, de loi respective \(\mathcal{N}(0,1)\) et \(\chi_n^2\). Alors la variable aléatoire \(T=\frac{X}{\sqrt{Y/n}}\) admet une loi de Student à \(n\) degrés de liberté.
Loi de Fisher-Snédécor#
from scipy.stats import f
n = 2
m=4
x=3
mean, var = f.stats(n, m,moments='mv')
print("Moyenne : ", mean)
print("Variance : ", var)
print("Densité de probabilité : ", f(n,m).pdf(x))
print("Fonction de répartition : ", f(n,m).cdf(x))
Moyenne : 2.0
Variance : inf
Densité de probabilité : 0.06399999999999996
Fonction de répartition : 0.84
L’utilisation pratique de cette loi est énoncée par le théorème suivant :
Theorem 11
Soient deux variables aléatoires \(X\) et \(Y\) indépendantes, de loi respective \(\chi_n^2\) et \(\chi_m^2\). Alors la variable aléatoire \(T=\frac{X/n}{Y/m}\) admet une loi de Fisher-Snédécor à \(n\) et \(m\) degrés de liberté.
Statistique descriptive#
Définitions#
Dans la suite, nous nous intéressons à des unités statistiques ou individus statistiques ou unités d’observation (individus, entreprises, ménages, données abstraites…). Bien que le cas infini soit envisageable, nous nous restreignons ici à l’étude d’un nombre fini de ces unités. Un ou plusieurs caractères (ou variables) est mesuré sur chaque unité. Les variables sont désignées par simplicité par une lettre. Leurs valeurs possibles sont appelées modalités et l’ensemble des valeurs possibles ou des modalités est appelé le domaine. L’ensemble des individus statistiques forme la population.
Typologie des variables#
La typologie des variables définit le type de problème statistique que l’on doit aborder :
Definition 17 (Variable qualitative)
La variable est dite qualitative lorsque les modalités sont des catégories. Suivant qu’il existe une relation d’ordre sur les catégories, on distingue :
la variable qualitative nominale, si les modalités ne peuvent pas être ordonnées
la variable qualitative ordinale, si les modalités peuvent être ordonnées
Definition 18 (Variable quantitative)
La variable est dite quantitative lorsque les modalités sont des valeurs numériques (scalaires ou vectorielles) :
la variable est quantitative discrète si les modalités forment un ensemble dénombrable
la variable quantitative est continue si les modalités vivent dans un espace continu.
Dans certains cas (l’âge par exemple), une variable d’un type (quantitative continue ici) peut être exprimée d’une autre manière pour des raisons pratiques de collecte ou de mesure. De même, les variables qualitatives ordinales peuvent être codées, par exemple selon une échelle de satisfaction.
Definition 19 (Série statistique)
On appelle série statistique une suite de \(n\) valeurs prises par une variable \(X\) sur les unités d’observation, notées \(x_1\cdots x_n\).
Variable qualitative nominale#
Une variable qualitative nominale a des valeurs distinctes qui ne peuvent pas être ordonnées. On note \(J\) le nombre de valeurs distinctes ou de modalités, notées \(x_1\cdots x_J\). On appelle effectif d’une modalité ou d’une valeur distincte le nombre de fois que cette modalité (ou valeur distincte) apparaît dans la série statistique. On note \(n_j\) l’effectif de la modalité \(x_j\). La fréquence d’une modalité \(j\) est alors égale à \(f_j=\frac{n_j}{n}\).
Le tableau statistique d’une variable qualitative nominale peut être représenté par deux types de graphiques. Les effectifs sont représentés par un diagramme en tuyau d’orgue et les fréquences par un diagramme en secteurs. Pour ce dernier, si le nombre de modalités devient trop important, la représentation perd de son intérêt.

Variable qualitative ordinale#
Le domaine peut être muni d’une relation d’ordre. Les valeurs distinctes d’une variable ordinale peuvent donc être ordonnées \(x_1\leq x_2\cdots\leq x_J\), à permutation près dans l’ordre croissant des indices. L’effectif cumulé \(N_j\) et la fréquence cumulée \(F_j\) des variables sont alors définis par \((\forall j\in[\![1,J]\!])\quad N_j=\displaystyle\sum_{i=1}^j n_i\quad \textrm {et}\quad F_j=\displaystyle\sum_{i=1}^j f_i\)
Les fréquences et les effectifs (cumulés ou non) peuvent être représentés sous la forme d’un diagramme en tuyaux d’orgue.
Variable quantitative discrète#
Le domaine d’une telle variable est dénombrable. Comme pour les variables qualitatives ordinales, on peut calculer les effectifs (cumulés ou non) et les fréquences (cumulées ou non).
La répartition des valeurs de la variable peut être représentée par un diagramme en bâtonnets. Les fréquences cumulées sont visualisées par la fonction de répartition de la variable , définie par
\(F(x) = \left \{ \begin{eqnarray} 0&\textrm{ si} &x<x_1\\ F_j &\textrm{ si}& x\in[x_j,x_{j+1}[\\ 1& \textrm{ si}& x_J\leq x \end{eqnarray}\right .\)

Variable quantitative continue#
Le domaine d’une variable quantitative continue est infini et est assimilé à \(\mathbb{R}\) ou à un intervalle de \(\mathbb{R}\). Cependant, la mesure étant limitée en précision, on peut traiter ces variables comme des variables discrètes.
La représentation graphique de ces variables (et la construction du tableau statistique) passe par le regroupement des modalités ou valeurs en classes. Le tableau ainsi construit est souvent appelé distribution groupée. La classe \(j\) est l’ensemble des valeurs incluses dans \([c^-_j,c^+_j[\), où \(c^-_j\) et \(c^+_j\) sont les bornes inférieure et supérieure de la classe. Sur cet intervalle, on peut calculer la fréquence \(f_j\) de la classe, la fréquence cumulée, l’effectif \(n_j\)… La répartition en classes nécessite de définir a priori le nombre de classes \(J\) et l’amplitude \(a_j\) des intervalles. Si elles peuvent être définies de manière empirique, quelques règles permettent d’établir \(J\) et l’amplitude pour une série statistique de \(n\) observations. Par exemple :
\(J=1+3.3log_{10}(n)\) (règle de Sturge)
\(J=2.5\sqrt[4\,]{n}\) (règle de Yule)
La représentation graphique se fait par exemple par histogramme. Les histogrammes sont des représentations de la distribution des données, agrégées par intervalles. A partir de l’étendue des données, on subdivise l’intervalle en \(k\) bins, de tailles \(t_k\) non nécessairement identiques, et on compte le nombre d’individus \(n_k\) rentrant dans chaque bin. L’histogramme peut alors être :
non normalisé : \(h_k = n_k\)
normalisé: \(h_k = n_k/t_k\)
import numpy as np
import matplotlib.pyplot as plt
X = np.loadtxt("./data/data.csv", delimiter=",")[:,1]
# Comptage des individus
def count(X, bins):
def findBin(x, bins):
for i, bin in enumerate(bins):
left, right = bin
if left <= x and x < right:
return i
return None
count = [0] * len(bins)
for x in X:
i = findBin(x, bins)
if i != None:
count[i] += 1
return count
# Affichage de l'histogramme
def plot_hist(X, bin_min, bin_max, bin_width,normed=True):
bins =[ [i, i+bin_width] for i in np.arange(bin_min, bin_max, bin_width) ]
bin_left = [ l for l, r in bins ]
bin_widths = [ r-l for l,r in bins ]
bin_height = [
float(c) / w if normed else c
for c,w in zip(count(X, bins), bin_widths)
]
plt.bar(bin_left,width=bin_width,height=bin_height)
plt.tight_layout()
bin_min = min(X)
bin_max = max(X)
plt.figure(figsize=(16, 4))
for subplot, binsize in ((141, 5),(142, 20), (143, 80), (144, 1000)):
title = 'Taille des bins : ', binsize
plt.subplot(subplot)
plt.title(title, fontsize=12)
plot_hist(X, bin_min, bin_max, binsize)
Le choix de la largeur \(t\) des bins dépend des données, et par exemple on a :
Loi de Scott : \(t = \frac{3.5 \sigma}{Card(X)^{1/3}}\), où \(\sigma\) est l’écart type des données.
Loi de Freedman–Diaconis : \( t = \frac{2 IQR}{Card(X)^{1/3}}\), où \(IQR\) est la distance interquartile.
Remark 9
Toutes les classes n’ont pas nécessairement la même amplitude
Les effectifs (ou les fréquences) sont représenté(e)s par un histogramme. Si l’on s’intéresse à la représentation des effectifs (resp. des fréquences), la densité d’effectif \(h_j\) (resp. de fréquence \(d_j\)), définie par \(h_j=\frac{n_j}{a_j}\) (resp. \(d_j=\frac{f_j}{a_j}\)), détermine la hauteur du rectangle représentant la classe \(j\). L’aire de l’histogramme est égale à l’effectif total \(n\) pour l’histogramme des effectifs, et à 1 pour l’histogramme des fréquences.
Comme dans le cas discret, la fonction de répartition peut être calculée de la manière suivante :
\(F(x) = \left \{ \begin{eqnarray} 0&\textrm{ si}& x<c^-_1\\ F_{j-1}+\frac{f_j}{c^+_j-c^-_j}(x-c^-_j) &\textrm{ si}& x\in[c^-_j,c^+_j[\\ 1& \textrm{ si}&c^+_J\leq x \end{eqnarray}\right .\)
Pré-traitement des données#
Faire une analyse de données, c’est traiter un tableau de taille \(n\times d\) où \(n\) est le nombre d’individus et \(d\) le nombre de variables (caractères) mesurées sur ces individus. En raison de la colecte des données, des erreurs de mesure ou d’autres facteurs, ce tableau est parfois incomplet et il convient de le prétraiter pour pouvoir effectuer l’analyse.
Points aberrants#
Une anomalie (ou point aberrant, ou outlier) est une observation (ou un sous-ensemble d’observations) qui semble incompatible avec le reste de l’ensemble de données.
S’il est parfois possible d’identifier graphiquement ces points aberrants à l’aide de boîtes à moustaches (voir Pour résumer), il existe une vaste littérature sur la détection d’anomalies qu’il n’est pas possible d’aborder ici. De plus, suivant le type de données manipulées (données séquentielles ou non), le type de méthode peut être différent. On mentionne donc ici quelques techniques simples :
le détecteur de Hampel : on considère que \(x_i\) est un point aberrant si
où \(MADM = 1.4826.|x_i-x_{\frac12}|_\frac12\), et où \(y_{\frac12}\) est la médiane des données \(y\)
la règle empirique de l’écart-type : on considère que \(x_i\) est un point aberrant si
où \(\bar x\) (respectivement \(\sigma\)) est la moyenne (resp. l’écart-type ) des données.
la méthode LOF (Local Outlier Factor) qui repose sur le concept de densité locale, où la localité est donnée par les \(k\) voisins les plus proches, dont la distance est utilisée pour estimer la densité. En comparant la densité locale d’un objet aux densités locales de ses voisins, il est possible d’identifier des régions de densité similaire et des points dont la densité est nettement inférieure à celle de leurs voisins. Ces derniers sont considérés comme des valeurs aberrantes. La densité locale est estimée par la distance typique à laquelle un point peut être atteint à partir de ses voisins.
la méthode COF (Connectivity based Outlier Factor) basée sur le même principe que LOF, à ceci près que l’estimation de densité est effectuée en utilisant le minimum de la somme des distances reliant tous les voisins d’un point donné.
Dans le code suivant, 7 anomalies sont introduites dans un jeu de 70 données dans le plan, et détectées par la méthode LOF. Le score d’anomalie calculé par la méthode est proportionnel au cercle entourant le point. Les faux positifs (points de données détectés par LOF comme étant des anomalies) sont reportés en rouge.
import numpy as np
import matplotlib.pyplot as plt
from sklearn.neighbors import LocalOutlierFactor
np.random.seed(42)
X1 = 0.3 * np.random.randn(70, 2)
X2 = np.random.uniform(low=0, high=2, size=(7, 2))
X = np.r_[X1, X2]
anom = np.ones(len(X), dtype=int)
anom[-len(X2):] = -1
clf = LocalOutlierFactor(n_neighbors=20, contamination=0.1)
y_pred = clf.fit_predict(X)
err = y_pred != anom
n_errors = (err).sum()
X_scores = clf.negative_outlier_factor_
X3 = X[err==True]
fig = plt.figure(figsize=(8,8))
ax = fig.add_subplot(1, 1, 1)
ax.spines['left'].set_position('center')
ax.spines['bottom'].set_position('center')
ax.spines['right'].set_color('none')
ax.spines['top'].set_color('none')
plt.scatter(X[:, 0], X[:, 1], color="k", s=3.0)
plt.scatter(X3[:,0],X3[:,1],color='r',s=10)
r = (X_scores.max() - X_scores) / (X_scores.max() - X_scores.min())
scatter = plt.scatter(X[:, 0],X[:, 1],s=1000 * r,edgecolors="g",facecolors="none",)
plt.suptitle("Détection d'anomalies par LOF")
plt.tight_layout()
plt.show()
Données manquantes#
Lors de la collecte des données, il arrive que certaines d’entre elles ne soient pas disponibles ou enregistrées. On distingue trois types de données manquantes :
les données manquant de manière complètement aléatoire : la probabilité qu’une donnée soit manquante ne dépend pas des valeurs connues ni de la valeur manquante elle-même.
les données manquant de manière aléatoire : la probabilité qu’une donnée soit manquante peut dépendre de valeurs connues (d’autres variables parmi les \(d\)), mais pas de la variable dont les valeurs sont manquantes.
les données manquant de manière non aléatoire : la probabilité qu’une donnée soit manquante dépend d’autres variables qui ont également des valeurs manquantes, ou elle dépend de la variable elle-même.
Pour résoudre ce problème de données manquantes, dans la mesure où ces dernières ne sont pas trop nombreuses, on a recours à des techniques d’imputation.
Dans le cas d’une imputation simple (une seule donnée manquante), on peut par exemple remplacer la valeur manquante dans une colonne \(j\in[\![1,p]\!]\) par :
une valeur fixe
une statistique sur la colonne \(j\) (la plus petite ou la plus grande valeur, la moyenne de la colonne, la valeur la plus fréquente…)
une valeur issue des \(k\) plus proches voisins de la ligne du tableau où la valeur en position \(j\) est manquante
une valeur calculée par régression (voir chapitre correspondant) sur l’ensemble du tableau
la valeur précédente (ou suivante) dans le cas où la colonne est une série ordonnée ou temporelle.
Le code suivant remplace les valeurs manquantes (\texttt{np.nan}) par la moyenne de la colonne qui contient ces valeurs.
import numpy as np
from sklearn.impute import SimpleImputer
imp = SimpleImputer(missing_values=np.nan, strategy='mean')
X = [[1, 2], [np.nan, 3], [4, 5]]
print(imp.fit_transform(X))
[[1. 2. ]
[2.5 3. ]
[4. 5. ]]
Dans le cas d’une imputation multiple, où un sous-ensemble de valeurs doit être comblé, on peut adopter la stratégie suivante :
Effectuer une imputation simple pour toutes les valeurs manquantes de l’ensemble de données.
Remettre les valeurs manquantes d’une variable \(j\in[\![1,p]\!]\) à “manquante”.
Former un modèle pour prédire les valeurs manquantes de \(j\) en utilisant les valeurs disponibles de la variable \(j\) en tant que variable dépendante et les autres variables de l’ensemble de données comme indépendantes.
Prédire les valeurs manquantes dans la colonne \(j\) en utilisant le modèle entraîné à l’étape 3.
Répéter les étapes 2 à 4 pour toutes les autres colonnes présentant des valeurs manquantes.
Répéter l’étape 2-5 jusqu’à convergence (ou un nombre maximal d’itérations)
Répéter les étapes 1-6 plusieurs fois avec différentes initialisations de nombres aléatoires pour créer différentes versions de l’ensemble de données complet/imputé.
import numpy as np
from sklearn.experimental import enable_iterative_imputer
from sklearn.impute import IterativeImputer
imp = IterativeImputer(max_iter=5, random_state=0)
X = [[1, 2], [3, 6], [4, 8], [np.nan, 3], [7, np.nan]]
print((imp.fit_transform(X)))
[[ 1. 2. ]
[ 3. 6. ]
[ 4. 8. ]
[ 1.50004509 3. ]
[ 7. 14.00004135]]
Transformation des données qualitatives#
Pour pouvoir être traitées numériquement, les données qualitatives doivent être transformées. Plusieurs techniques existent parmi lesquelles :
pour le cas des variables ordinales : on utilise le rang pour encoder les modalités de la variable. Par exemple, pour un niveau de diplomation Brevet\(<\)Bac\(<\)Licence\(<\)Master\(<\)Doctorat, on codera Licence par 3 et Doctorat par 5.
le one-hot encoding : pour une variable qualitative présentant \(J\) modalités, on construit un vecteur de taille \(J\) dont les composantes sont toutes nulles sauf la \(J\)-ème qui vaut 1. Par exemple, si \(J\)=3, on construit 1 vecteur de taille 3, et pour un individu ayant la modalité 2, on le code en (0 1 0). Lorsque \(J\) est élevé, on se retrouve avec un jeu de données volumineux.
les méthodes de plongement (embedding) : utilisées principalement en apprentissage profond (Deep learning) pour le traitement du langage naturel, ces classes de méthodes construisent une représentation de chaque modalité d’une variable qualitative en un vecteur numérique de taille fixe et choisie. Pour le mot “rouge” de la variable “couleur”, par exemple, l’encodage peut par exemple être représenté par le vecteur (0.31 0.57 0.12). En pratique, le calcul de ces représentations s’effectue classiquement par l’entraînement d’un réseau de neurones ayant pour entrée uniquement les variables qualitatives. Tout d’abord, un encodage one-hot est appliqué à la variable afin d’être mise en entrée du réseau, qui n’accepte que les entrées numériques. La sortie d’une des couches cachées du réseau constitue alors le vecteur recherché. On concatène ensuite ce vecteur aux données initiales, utilisées dans l’ajustement du modèle final.
from sklearn.preprocessing import OrdinalEncoder,OneHotEncoder
import numpy as np
X = [['Rouge'],['Vert'],['Rouge'],['Bleu']]
ohe = OneHotEncoder()
oe = OrdinalEncoder()
print("Données : \n",X)
print("One Hot Encoder : \n", ohe.fit_transform(X).toarray())
print("Ordinal Encoder : \n", oe.fit_transform(np.array(X)))
Données :
[['Rouge'], ['Vert'], ['Rouge'], ['Bleu']]
One Hot Encoder :
[[0. 1. 0.]
[0. 0. 1.]
[0. 1. 0.]
[1. 0. 0.]]
Ordinal Encoder :
[[1.]
[2.]
[1.]
[0.]]
Normalisation#
Il arrive que les données collectées ne soient pas du même ordre de grandeur, notamment en raison des unités de mesure (un individu mesuré par sa taille en millimètres et son poids en tonnes par exemple). Cette différence de valeur absolue introduit un biais dans l’analyse des données (figure 2) qu’il convient de corriger. C’est le processus de normalisation des données.
Pour une colonne \(j\in[\![1,p]\!]\), on dispose de \(n\) valeurs \(x_{ij},i\in[\![1,n]\!]\). On note : \(x_{min} = \displaystyle\min_{i\in[\![1,n]\!]}x_{ij}\), \(x_{max} = \displaystyle\max_{i\in[\![1,n]\!]}x_{ij}\), \(\bar x_j\) la moyenne des \(x_{ij}\), \(\sigma_j\) leur écart-type, \(x_\frac14, x_\frac12\) et \(x_\frac34\) les premier, deuxième et troisième quartiles. On distingue alors classiquement trois types de normalisation :
la normalisation min-max : \(x_{ij} = \frac{x_{ij}-x_{min}}{x_{max}-x_{min}}\)
la normalisation standard : \(x_{ij}=\frac{x_{ij}-\bar x_j}{\sigma_j}\)
la normalisation robuste : \(x_{ij}=\frac{x_{ij}-x_\frac12}{x_\frac34-x_\frac14}\)
Fig. 1 Effet des différents types de normalisation.#
La normalisation standard dépend de la présence de points aberrants (qui affectent la moyenne).
Fig. 2 Effet de la normalisation sur un algorithme de classification (voir chapitre correspondant). En haut un jeu de données avec deux nuages de points allongés selon l’axe des \(x\), certainement en raison d’une différence d’échelle entre les unités de mesure de \(x\) et \(y\). Au milieu une classification par \(k\)-moyennes, \(k\)=2 sans normalisation, en utilisant la distance euclidienne. Les deux classes sont séparées suivant l’axe des \(x\), ne reflétant pas la répartition naturelle des points. En bas, après normalisation, les deux nuages de points sont correctement séparés#
Statistique descriptive univariée#
La statistique descriptive univariée consiste à étudier un ensemble d’unités d’observations, lorsque celles-ci sont décrites par une seule variable.
Soit donc \(X\) une variable et \(x_j,j\in [\![1,n]\!]\) l’ensemble des valeurs prises par cette variable, \(n_i\) étant le nombre de fois où la valeur \(x_i\) est prise. \(X\) peut être qualitative ou quantitative, les paramètres de description décrits dans la suite s’appliqueront à l’une de ces natures ou au deux.
Paramètres de position#
Plusieurs paramètres permettent de décrire la position “la plus représentative” d’une variable :
Definition 20 (Mode)
Le mode est la valeur distincte correspondant à l’effectif le plus élevé. Il est noté \(x_M\).
Le mode peut être calculé pour tout type de variable, n’est pas nécessairement unique. Lorsqu’une variable continue est découpée en classes, il est possible de définir une classe modale (classe correspondant à l’effectif le plus élevé)
Definition 21 (Moyennes)
Les moyennes ne peuvent être définies que sur des variables quantitatives. Plusieurs moyennes peuvent être calculées, parmi lesquelles :
la moyenne arithmétique \(\bar{x} = \frac{1}{n}{\displaystyle\sum_{i=1}^nx_i}= \frac{1}{n}{\displaystyle\sum_{i=1}^J n_ix_i}\). C’est le moment à l’origine d’ordre 1.
la moyenne géométrique : si les \(x_i\) sont positifs, la moyenne géométrique est la quantité \(G=\left (\displaystyle\prod_{i=1}^n x_i\right )^\frac{1}{n}\). C’est donc l’exponentielle de la moyenne arithmétique des logarithmes des valeurs observées.
la moyenne harmonique : si les \(x_i\) sont positifs, la moyenne harmonique est définie par \(H=\frac{n}{\displaystyle\sum_{i=1}^J 1/x_i}\)
la moyenne pondérée : dans certains cas, on n’accorde pas la même importance à toutes les observations (fiabilité, confiance…). La moyenne pondérée est alors définie par \(\bar{x}_w= \frac{\displaystyle\sum_{i=1}^n w_ix_i}{\displaystyle\sum_{i=1}^n w_i}\)
Dans le cas où \(\forall i,w_i=1/n\), la moyenne pondérée est la moyenne arithmétique. De plus, dans tous les cas, on peut montrer que \(H\leq G\leq \bar{x}\).
import numpy as np
import matplotlib.pyplot as plt
X = np.loadtxt("./data/data.csv", delimiter=",")[:,1]
def ArithmeticMean(X):
# calculable directement avec np.mean(X)
return float(sum(X)) / len(X)
def GeometricMean(X):
n=len(X)
p=1
for i in range(n):
p*=X[i]
return float(p**(1/n))
def HarmonicMean(X):
n=len(X)
s=0
for i in range(n):
s += 1/X[i]
return len(X) / s
def WeightedMean(X):
# Exemples de poids
w = np.random.rand(len(X))
return np.average(X,weights=w)
plt.figure(figsize=(8,4))
plt.rcParams['font.size'] = '16'
plt.plot(X, [0.01]*len(X), '|', color='k',label='Points')
for method, style, title in ((ArithmeticMean,'r','Arithmétique'),(GeometricMean,'b','Géométrique'),
(HarmonicMean,'g','Harmonique'),(WeightedMean,'y', 'Pondérée')):
m=method(X)
print (method.__name__, " : ",m)
plt.plot([m,m],[0,0.2],style,label=title)
plt.legend()
plt.tight_layout()
plt.show()
ArithmeticMean : 1316.3086347078017
GeometricMean : 1258.4787575642572
HarmonicMean : 1198.219210728503
WeightedMean : 1315.5442042923557
Definition 22 (Médiane)
La médiane, notée \(x_\frac{1}{2}\) est la valeur centrale de la série statistique triée par ordre croissant.
En d’autres termes, c’est la valeur de la série triée telle qu’au moins 50% des effectifs soient inférieurs à \(x_\frac{1}{2}\). Elle peut être calculée sur des variables quantitatives ou qualitatives ordinales (dans le cas où des échelles de valeur ont été définies).
Definition 23 (Quantiles)
Le quantile d’ordre \(p\) est défini par \(x_p=F^{-1}(p)\), où \(F\) est la fonction de répartition.
La notion de quantile généralise la notion de médiane. Si la fonction de répartition était continue et strictement croissante, la définition de \(x_p\) serait unique. Or \(F\) est discontinue et définie par paliers et les valeurs de quantiles varient suivant par exemple l’utilisation ou non d’une méthode d’interpolation de \(F\). Pour calculer \(x_p\), on peut par exemple considérer que si \(np\) est pair, \(x_p=\frac{x_{np}+x_{np+1}}{2}\) on remarque alors que la médiane est le quantile d’ordre \(\frac{1}{2}\) et sinon \(x_p=x_{\lceil{np}\rceil}\) En particulier, un quartile est chacune des 3 valeurs qui divisent les données triées en 4 parts égales, de sorte que chaque partie représente 1/4 de l’échantillon de population. On note \(Q_i\) le \(i^e\) quartile.
import numpy as np
import matplotlib.pyplot as plt
X = np.loadtxt("./data/data.csv", delimiter=",")[:,1]
plt.figure(figsize=(8,4))
plt.rcParams['font.size'] = '16'
plt.plot(X, [0.01]*len(X), '|', color='k',label='Points')
for q, style in ((25,'r'),(50,'b'),(75,'g')):
m=np.percentile(X,q)
print ("quartile ", q, " : ",m)
plt.plot([m,m],[0,0.2],style,label=q)
plt.legend()
plt.tight_layout()
quartile 25 : 905.9190521240237
quartile 50 : 1399.66320800781
quartile 75 : 1626.326538085935
Paramètres de dispersion#
Il est très souvent utile d’apprécier la dispersion des mesures autour du paramètre de position. Pour cela, sur des variables quantitatives uniquement, plusieurs outils sont disponibles :
Definition 24 (Etendue)
L’étendue est la simple différence entre la plus grande et la plus petite valeur observée.
Definition 25 (Déviation maximale)
La déviation maximale est définie par \( maxdev(X) = max \{ |x_i - \bar{x}| \,|\, i\in[\![1,n]\!]\}\)
Definition 26 (Déviation moyenne absolue)
La déviation moyenne absolue est définie par \( mad(X) = \frac{1}{n} \displaystyle\sum_{i=1}^n |x_i - \bar{x}|\)
Definition 27 (Distance interquartile)
La distance interquartile \(Q_3-Q_1\) est la différence entre le troisième et le premier quartile. C’est une statistique robuste aux points aberrants.
Definition 28 (Variance)
La variance est la somme des carrés des écarts à la moyenne, normalisée par le nombre d’observations \(\sigma^2 = \frac{1}{n}\displaystyle\sum_{i=1}^n\left (x_i-\bar{x}\right )^2\)
Cette variance est dite biaisée. La variance non biaisée est obtenue en divisant non pas par \(n\), mais par \(n-1\).
Definition 29 (Ecart type)
L’écart type est la racine carrée de la variance.
Definition 30 (Ecart moyen absolu)
L’écart moyen absolu est la somme des valeurs absolues des écarts à la moyenne divisée par le nombre d’observations.
Notons qu’il s’agit de la distance \(L_1\) du vecteur des observations au vecteur composé de la valeur moyenne, divisé par le nombre d’observations. La variance est la distance \(L_2\) entre ces deux vecteurs. Lorsque la distance est calculée par rapport au vecteur composé de la valeur médiane, on parle d’écart médian absolu.

import numpy as np
import math
import matplotlib.pyplot as plt
X = np.loadtxt("./data/data.csv", delimiter=",")[:,1]
def max_dev(X):
m = np.mean(X)
return max(abs(x - m) for x in X)
def mad(X):
m = np.mean(X)
return sum(abs(x - m) for x in X) / float(len(X))
def sigma(X):
m = np.mean(X)
return math.pow(sum((x - m)**2 for x in X) / len(X), 0.5)
def IQR(X): return np.percentile(X,75) - np.percentile(X,25)
plt.figure(figsize=(12,4))
plt.rcParams['font.size'] = '16'
plt.plot(X, [0.01]*len(X), '|', color='k',label='Points')
m = np.mean(X)
for method, pos,style, in ((max_dev,0.5,'r'),(mad,0.6,'b'),(sigma,0.7,'g'),(IQR,0.8,'y')):
s=method(X)
print (method.__name__, " : ",m, "+/-",s)
plt.plot([m,m],[0,1],'black' )
plt.plot([m-s,m-s],[0,1],style,label=method.__name__)
plt.plot([m+s,m+s],[0,1],style)
plt.plot([m-s,m+s],[pos,pos],style)
plt.legend(loc='best')
plt.tight_layout()
max_dev : 1316.3086347078017 +/- 738.0729570890783
mad : 1316.3086347078017 +/- 327.4656915004233
sigma : 1316.3086347078017 +/- 374.5723639541368
IQR : 1316.3086347078017 +/- 720.4074859619113
Paramètres de forme#
Les paramètres de forme sont souvent calculés en référence à la forme de la loi normale, pour évaluer la symétrie, l’aplatissement ou la dérive par rapport à cette loi.
Definition 31 (Skewness)
Le skewness est également appelé coefficient d’asymétrie de Fisher.
Definition 32 (Kurtosis)
\(K\) permet de mesurer l’aplatissement.
Definition 33 (Coefficient d’asymétrie de Yule)
Ce coefficient est fondé sur les positions de trois quartiles (le premier, la médiane et le troisième) et est normalisé par la distance interquartile.
Definition 34 (Coefficient d’asymétrie de Pearson)
Ce coefficient est fondé sur la comparaison de la moyenne et du mode, et est normalisé par l’écart type.
Tous les coefficients d’asymétrie ont des propriétés similaires : ils sont nuls si la distribution est symétrique, négatifs si la distribution est allongée à gauche (left asymmetry), et positifs si la distribution est allongée à droite (right asymmetry).
On peut aussi chercher à mesurer l’aplatissement (ou kurtosis) d’une distribution de mesure. Dans ce cas, on utilise le coefficient d’aplatissement de Pearson ou de Fisher, respectivement donnés par \(\beta_2=\frac{m_4}{\sigma^4}\quad\textrm{et}\quad g_2=\beta_2-3\)
Une distribution est alors dite :
mésokurtique si \(g_2\) est proche de 0
leptokurtique si \(g_2>0\) (queues plus longues et distribution plus pointue)
platykyrtique si \(g_2<0\) (queues plus courtes et distribution arrondie).
Pour résumer#
Les principales statistiques d’une série statistique peuvent être résumées dans des boîtes à moustache, qui permettent de voir sur un même graphique :
la médiane
une boîte entre les premier et le troisième quartile
l’étendue
les points aberrants.
Ce mode de représentation consiste à dessiner une boîte dont les extrémités dépendent du premier et du troisième quartiles \(Q_1\) et \(Q_3\) , en ajoutant une barre à l’intérieur matérialisant le second quartile \(Q_2\) (la valeur médiane de l’échantillon). A cette boîte, on ajoute des “moustaches” dont les extrémités dépendent :
soit des valeurs extrémales prises par l’échantillon (minimum et maximum);
soit de la plus petite et de la plus grande valeur de l’échantillon appartenant à l’intervalle \([Q_1 -\delta, Q_3+\delta ]\). La grandeur \(\delta\) est une mesure de la dispersion des données. Généralement, on utilise \(\delta = 1.5(Q_3-Q_1)\).
Les valeurs de l’ échantillon en dehors des moustaches sont parfois matérialisées par des points et sont alors considérées comme les points aberrants de l’échantillon.
import matplotlib.pyplot as plt
import numpy as np
import pandas as pd
def annotate_boxplot(bpdict, annotate_params=None,
x_offset=0.05, x_loc=0,
text_offset_x=35,
text_offset_y=20):
if annotate_params is None:
annotate_params = dict(xytext=(text_offset_x, text_offset_y), textcoords='offset points', arrowprops={'arrowstyle':'->'})
plt.annotate('Médiane', (x_loc + 1 + x_offset, bpdict['medians'][x_loc].get_ydata()[0]), **annotate_params)
plt.annotate('$Q_1$', (x_loc + 1 + x_offset, bpdict['boxes'][x_loc].get_ydata()[0]), **annotate_params)
plt.annotate('$Q_3$', (x_loc + 1 + x_offset, bpdict['boxes'][x_loc].get_ydata()[2]), **annotate_params)
plt.annotate('$Q_1-1.5(Q_3-Q_1)$', (x_loc + 1 + x_offset, bpdict['caps'][x_loc*2].get_ydata()[0]), **annotate_params)
plt.annotate('$Q_3+1.5(Q_3-Q_1)$', (x_loc + 1 + x_offset, bpdict['caps'][(x_loc*2)+1].get_ydata()[0]), **annotate_params)
df = pd.DataFrame({'Données': np.random.normal(scale=4, size=150)})
bpdict = df.boxplot(grid=False,whis=1.5, return_type='dict')
annotate_boxplot(bpdict, x_loc=0)
plt.tight_layout()
plt.show()
La description ne fait pas tout…#
La description d’un ensemble de valeurx \(x_j\) par la moyenne, la variance, voire le comportement linéaire (coefficient de corrélation, voir plus loin) peut ne pas suffire à comprendre la distribution des données. Un exemple classique (analyse bivariée, section suivante) est le quartet d’Anscombe (figure ci-dessous), constitué de quatre ensembles de points \((x,y)\in\mathbb{R}^2\) de même propriétés statistiques (moyenne, variance, coefficient de régression linéaire) mais qui sont distribués de manière totalement différente dans le plan.
import matplotlib.pyplot as plt
import numpy as np
x = [10, 8, 13, 9, 11, 14, 6, 4, 12, 7, 5]
y1 = [8.04, 6.95, 7.58, 8.81, 8.33, 9.96, 7.24, 4.26, 10.84, 4.82, 5.68]
y2 = [9.14, 8.14, 8.74, 8.77, 9.26, 8.10, 6.13, 3.10, 9.13, 7.26, 4.74]
y3 = [7.46, 6.77, 12.74, 7.11, 7.81, 8.84, 6.08, 5.39, 8.15, 6.42, 5.73]
x4 = [8, 8, 8, 8, 8, 8, 8, 19, 8, 8, 8]
y4 = [6.58, 5.76, 7.71, 8.84, 8.47, 7.04, 5.25, 12.50, 5.56, 7.91, 6.89]
datasets = {
'1.': (x, y1),
'2.': (x, y2),
'3.': (x, y3),
'4.': (x4, y4)
}
fig, axs = plt.subplots(2, 2, sharex=True, sharey=True, figsize=(6, 6),
gridspec_kw={'wspace': 0.08, 'hspace': 0.18})
axs[0, 0].set(xlim=(2, 15), ylim=(2, 14))
for ax, (label, (x, y)) in zip(axs.flat, datasets.items()):
ax.set_xlabel('x')
ax.set_ylabel('y')
ax.plot(x, y, '.',c='r')
p1, p0 = np.polyfit(x, y, deg=1) # slope, intercept
ax.axline(xy1=(0, p0), slope=p1, color='b', lw=2)
stats = (f'$\\bar x$ = {np.mean(y):.3f}\n'
f'$\\sigma$ = {np.std(y):.3f}\n'
f'$r$ = {np.corrcoef(x, y)[0][1]:.3f}')
ax.text(0.95, 0.07, stats, fontsize=9,
transform=ax.transAxes, horizontalalignment='right')
plt.show()
Statistique descriptive bivariée#
On s’intéresse à deux variables \(x\) et \(y\), mesurées sur les \(n\) unités d’observation. La série statistique est alors une suite de \(n\) couples \((x_i,y_i)\) des valeurs prises par les deux variables sur chaque individu.
Cas de deux variables quantitatives#
Le couple est un couple de valeurs numériques. C’est donc un point dans le plan \(\mathbb{R}^2\). Les variables \(x\) et \(y\) peuvent être analysées séparément, en opérant une statistique univariée sur chacune de ces variables. Les paramètres calculés (de position, de dispersion…) sont dits marginaux. Cependant, il est intéressant d’étudier le lien entre ces deux variables, par l’intermédiaire des valeurs des couples. On définit pour cela un certain nombre d’outils :
Definition 35 (Covariance)
La covariance de \(x\) et \(y\) est définie par : \(\sigma_{xy}=\frac{1}{n}\displaystyle\sum_{i=1}^n\left (x_i-\bar{x}\right )\left (y_i-\bar{y}\right )\)
Definition 36 (Coefficient de corrélation)
Le coefficient de corrélation de deux variables \(x\) et \(y\) est défini par \(r_{xy}=\frac{\sigma_{xy}}{\sigma_{x}\sigma_{y}}\). Le coefficient de détermination est le carré du coefficient de corrélation.
Le coefficient de corrélation est donc la covariance normalisée par les écarts types marginaux des variables. Il mesure la dépendance linéaire entre \(x\) et \(y\). Il est compris dans l’intervalle [-1,1] est est positif (resp. négatif) si les points sont alignés le long d’une droite croissante (resp. décroissante), d’autant plus grand en valeur absolue que la dépendance linéaire est vérifiée. Dans le cas où le coefficient est nul, il n’existe pas de dépendance linéaire.
Pour connaître plus précisément la relation linéaire qui lie \(x\) et \(y\), on effectue une régression linéaire en calculant par exemple la droite de régression : si \(y=a+bx\), il est facile de montrer que \(b=\frac{\sigma_{xy}}{\sigma_x^2}\quad\textrm{et}\quad a=\bar{y}-b\bar{x}\)
et la droite de régression s’écrit \(y-\bar{y}=\frac{\sigma_{xy}}{\sigma_x^2}\left ( x-\bar{x}\right )\).
A partir de cette droite, on peut calculer les valeurs ajustées, obtenues à partir de la droite de régression : \(y^*_i=a+bx_i\). Ce sont les valeurs théoriques des \(y_i\) et les résidus \(e_i=y_i-y_i^*\) représentent la partie inexpliquée des \(y_i\) par la droite de régression (ceux là même que l’on essaye de minimiser par la méthode des moindres carrés). Nous reviendrons dans le chapitre sur la régression sur l’analyse de ces résidus.
Cas de deux variables qualitatives#
Le couple est un couple de valeurs \((x_i,y_i)\) où \(x_i\) et \(y_i\) prennent comme valeurs des modalités qualitatives. Notons \(x_1\cdots x_J\) et \(y_1\cdots y_K\) les valeurs distinctes prises.
Les données peuvent être regroupées sous la forme d’un tableau de contingence prenant la forme suivante :
\(\begin{array}{c|ccccc|c} &y_1&\cdots&y_k&\cdots&y_K&total\\ \hline x_1&n_{11}&\cdots&n_{1k}&\cdots&n_{1K}&n_{1.}\\ \vdots&\vdots&\vdots&\vdots&\vdots&\vdots&\vdots\\ x_j&n_{j1}&\cdots&n_{jk}&\cdots&n_{jK}&n_{j.}\\ \vdots&\vdots&\vdots&\vdots&\vdots&\vdots&\vdots\\ x_J&n_{J1}&\cdots&n_{Jk}&\cdots&n_{JK}&n_{J.}\\ \hline total&n_{.1}&\cdots&n_{.k}&\cdots&n_{.K}&n\\ \end{array} \)
où \(n_{j.}\) (resp \(n_{.k}\) )sont les effectifs marginaux représentant le nombre de fois où \(x_j\) (resp. \(y_k\)) apparaît, et \(n_{jk}\) le nombre d’apparition du couple \((x_j,y_k)\).
Le tableau des fréquences \(f_{jk}\) s’obtient en divisant tous les effectifs par la taille \(n\) dans ce tableau.
Un tel tableau s’interprète toujours en comparant les fréquences en lignes ou les fréquences en colonnes (profils lignes ou colonnes), définies respectivement par \(f_k^{(j)}= \frac{n_{jk}}{n_{j.}}=\frac{f_{jk}}{f_{j.}}\quad\textrm{ et }\quad f_j^{(k)}= \frac{n_{jk}}{n_{.k}}=\frac{f_{jk}}{f_{.k}}\)
Si l’on cherche un lien entre les variables, on construit un tableau d’effectifs théoriques qui représente la situation où les variables ne sont pas liées (indépendance). Ce tableau est constitué des effectifs \(n_{jk}^*=\frac{n_{j.}n_{.k}}{n}\) Les effectifs observés \(n_{jk}\) ont les mêmes marges que les \(n_{jk}^*\), et les écarts à l’indépendance sont calculés par la différence \(e_{jk}=n_{jk}-n_{jk}^*\)
La dépendance du tableau se mesure au moyen du khi-deux défini par \(\chi^2_{obs}= \displaystyle\sum_{k=1}^K\displaystyle\sum_{j=1}^J\frac{e_{jk}^2}{n_{jk}^*}\) qui peut être normalisé pour ne plus dépendre du nombre d’observations : \(\phi^2=\frac{\chi^2_{obs}}{n}\)
La construction du tableau des effectifs théoriques et sa comparaison au tableau des observations permet dans un premier temps de mettre en évidence les associations significatives entre modalités des deux variables. Pour cela, on calcule la contribution au \(\chi^2\) des modalités \(j\) et \(k\) :
Le signe de la différence \(n_{jk}-n_{jk}^*\) indique alors s’il y a une association positive ou négative entre les modalités \(j\) et \(k\).
Plus généralement, le \(\chi^2_{obs}\) est un indicateur de liaison entre les variables. Dans le cas où \(\chi^2_{obs}=0\), il y a indépendance. Pour rechercher la borne supérieure du khi-deux et voir dans quel cas elle est atteinte, on développe le carré et on obtient
Comme \(\frac{n_{jk}}{n_{.k}}\leq 1\) on a \( \frac{n_{jk}^2}{n_{j.}n_{.k}} \leq \frac{n_{jk}}{n_{.k}}\) d’où
d’où \(\chi^2_{obs}\leq n(K-1)\). On pourrait de même montrer que \(\chi^2_{obs}\leq n(J-1)\) et donc \(\phi^2\leq min(J-1,K-1)\).
La borne est atteinte dans le cas de la dépendance fonctionnelle (si \(\forall j \frac{n_{jk}}{n_{j.}}=1\), i.e. il n’existe qu’une case non nulle dans chaque ligne.)
A partir de ce khi-deux normalisé, on calcule finalement plusieurs coefficients permettant de mesurer l’indépendance, et parmi ceux-ci citons :
le coefficient de Cramer: \(V=\sqrt{\frac{\phi^2}{min(J-1,K-1)}}\)
le coefficient de contingence de Pearson : \(C = \sqrt{\frac{\phi^2}{\phi^2 + 1}}\)
le coefficient de Tschuprow : \(T = \sqrt{\frac{\phi^2}{\sqrt{(K-1)(J-1)}}}\)
Ces coefficients sont tous compris entre 0 (indépendance) et 1 (dépendance fonctionnelle). Pour estimer à partir de quelle valeur la dépendance fonctionnelle est significative, on procède de la manière suivante : si les \(n\) observations étaient prélevées dans une population où les variables sont indépendantes, on recherche les valeurs probables de \(\chi^2_{obs}\).
En s’appuyant sur la loi multinomiale et le test du \(\chi^2\), on montre que \(\chi^2_{obs}\) est une réalisation d’une variable aléatoire \(Z\) suivant approximativement une loi \(\chi^2_{(K-1)(J-1)}\).
Remark 10
Soient \(U_1\ldots U_p\) \(p\) variables i.i.d de loi normale centrée réduite. On appelle loi du \(\chi^2\) à \(p\) degrés de liberté la loi de la variable \(\displaystyle\sum_{i=1}^pU_i^2\).
En effet, les \(e_{jk}\) sont liées par \((K-1)(J-1)\) relations linéaires puisqu’on estime les probabilités de réalisation de \(x_j\) et \(y_k\) respectivement par \(n_{j,.}/n\) et \(n_{.k}/n\). Il suffit alors de fixer un risque d’erreur \(\alpha\) (une valeur qui, s’il y avait indépendance, n’aurait qu’une probabilité faible d’être dépassée), et on rejette l’hypothèse d’indépendance si \(\chi^2_{obs}\) est supérieur à la valeur critique qu’une variable \(\chi^2_{(K-1)(J-1)}\) a une probabilité \(\alpha\) de dépasser. L’espérance d’un \(\chi^2_{(K-1)(J-1)}\) étant égale à son degré de liberté, \(\chi^2_{obs}\) est d’autant plus grand que le nombre de modalités \(J\) et/ou \(K\) est grand.
D’autres indices existent, qui ne dépendent pas de \(\chi^2_{obs}\), comme par exemple
\(\begin{equation} G^2 = 2\displaystyle\sum_{k=1}^K\displaystyle\sum_{j=1}^J n_{jk} ln \left (\frac{ n_{jk}}{ n^*_{jk}} \right )\end{equation}\)
qui sous l’hypothèse d’indépendance suit une loi \(\chi^2_{(K-1)(J-1)}\).
Cas d’une variable quantitative et d’une variable qualitative#
On s’intéresse ici au cas où les modalités \(x_i\) sont qualitatives, et où \(y\) est une variable quantitative, dont les modalités sont des réalisations d’une variable aléatoire \(Y\). Le rapport de corrélation théorique entre \(x\) et \(Y\) est défini par
Si \(n_j\) est le nombre d’observations de la modalité \(x_j,j\in[\![1\,J]\!]\), \(y_{ij}\) la valeur de \(Y\) du \(i^e\) individu de la modalité \(j\), \(\bar{y}_1\ldots \bar{y}_J\) sont les moyennes de \(Y\) pour ces modalités et \(\bar{y}\) la moyenne totale sur les \(n\) individus, le rapport de corrélation empirique est défini par
La quantité
\(\sigma^2_\cap = \frac{1}{n}\displaystyle\sum_{j=1}^J n_j\sigma_j^2\)
avec \(\sigma_j^2 = \frac{1}{n_j}\displaystyle\sum_{i=1}^{n_j}\left (y_{ij}-\bar{y}_j \right )^2\), est appelée variance intra groupe (ou intra classe), et donne une idée de la variabilité à l’intérieur de chaque modalité. La quantité \(\sigma_\cup = \frac{1}{n}\displaystyle\sum_{j=1}^J n_j\left (\bar{y}_j-\bar{y}\right )^2\) est la variance inter groupes (ou inter classes), et mesure la variabilité entre les différentes modalités.
Le théorème de décomposition de la variance (ou théorème de Huygens) affirme que la variance totale \(\sigma^2_y\), calculée sans distinction de modalité s’écrit : \(\sigma^2_y = \sigma^2_\cap + \sigma^2_\cup\)
De ces définitions, on a alors :
\(e^2=0\) si toutes les moyennes de \(Y\) sont égales, d’où l’absence de dépendance en moyenne
\(e^2=1\) si tous les individus d’une modalité de \(x\) ont même valeur de \(Y\) et ceci pour chaque modalité
\(e^2\) permet de comprendre, via le théorème de Huygens, quelle variation est prédominante dans la variance totale. Ainsi par exemple, si la variable quantitative est la note d’un élève à un examen, et la variable qualitative son assiduité au cours correspondant, la variabilité entre les notes obtenues dans toute la promotion dépend de deux facteurs : le fait que les étudiants assistent ou pas aux cours, et le fait qu’à assiduité égale (i.e. à l’intérieur d’une même modalité d’assiduité) les étudiants n’ont pas le même niveau. \(e^2\) permet alors de savoir lequel de ces deux facteurs est prédominant pour expliquer la variabilité des notes dans toute la promotion.
Pour déterminer à partir de quelle valeur \(e^2\) est significatif, on compare donc \(\sigma^2_\cap\) à \(\sigma^2_\cup\). On peut montrer que si le rapport de corrélation théorique est nul, alors la variable \(\frac{\left (\frac{e^2}{J-1}\right )}{\left (\frac{1-e^2}{n-J}\right )}\) suit une loi de Fisher Snedecor, en supposant que les distributions conditionnelles de \(Y\) pour chaque modalité de \(X\) sont gaussiennes, de même espérance et de même variance.
Remark 11
Soient \(U\) et \(V\) deux variables aléatoires indépendantes suivant respectivement des lois \(\chi^2_n\) et \(\chi^2_p\). On définit la loi de Fisher Snedecor par \(F(n,p)=\frac{U/n}{V/P}\)) \(F(J-1,n-J)\)
Vers une analyse multivariée#
Bien évidemment, dans la majorité des cas, un individu sera décrit par \(p\geq 2\) variables. Si certains algorithmes de statistique descriptive multidimensionnelle sont abordés dans ce cours, il est néanmoins possible d’avoir une première approche exploratoire de ce cas.
Matrices de covariance et de corrélation#
La première idée, lorsque l’on a observé \(d\) variables sur \(n\) individus, est de calculer les \(d\) variances de ces variables, et les \(\frac{p(p-1)}{2}\) covariances. Ces mesures sont regroupées dans une matrice \(p\times p\), symétrique, semi définie positive, appelée matrice de variance-covariance (ou matrice des covariances), et classiquement notée \(\boldsymbol\Sigma\).
De même, on peut former la matrice des corrélations entre les variables, à diagonale unité et symétrique. La matrice résultante, notée \(\mathbf R\), est également semi définie positive et sa représentation graphique en fausses couleurs permet d’apprécier les dépendances linéaires entre variables.

Dans le cas de variables qualitatives, les coefficients de corrélation peuvent être remplacés par les coefficients de Cramer, de Tschuprow…
Tableaux de nuages#
On peut proposer à partir de là des représentations entre sous-ensembles de variables. La figure suivante propose un exemple de tels tableaux, parfois appelés splom (Scatter PLOt Matrix) :
la partie triangulaire supérieure représente les nuages de points de couples de variables
la diagonale représente les histogrammes des variables
la partie trianglaire inférieure donne le coefficient de corrélation entre les deux variables, et une estimation de la densité de la distribution 2D des données

Tableaux de Burt#
Le tableau de Burt est une généralisation particulière de la table de contingence dans le cas où l’on étudie simultanément \(p\) variables qualitatives \(X_1\ldots X_p\). Notons \(c_j\) le nombre de modalités de \(X_j\) et posons \(c=\displaystyle\sum_{j=1}^p c_j\).
Le tableau de Burt est une matrice carrée symétrique de taille \(c\), constituée de \(p^2\) sous-matrices. Chacune des \(p\) sous-matrices diagonales est relative à l’une des \(p\) variables, la \(j^e\) étant carrée de taille \(c_j\), diagonale, et de coefficients diagonaux les effectifs marginaux de \(X_j\). La sous-matrice dans le bloc \((k,l)\) du tableau, \(k\neq l\), est la table de contingence des variables \(X_k\) et \(X_l\).
Sélection de variables#
On s’intéresse ici à \(n\) individus \(\mathbf x_i, i\in[\![1,n]\!]\) décrits par \(d\) variables quantitatives ou caractéristiques (features), \(x_i\in \mathbb{R}^d\). Avec l’avènement des Big Data, et la généralisation des capteurs, \(d\) peut être très grand (plusieurs milliers), et analyser telles quelles les données brutes devient difficile d’un point de vue calculatoire et interprétation. De plus, il est rare que les caractéristiques soient totalement utiles et indépendantes.
Une étape souvent utilisée en analyse de données consiste donc à prétraiter cet espace, par exemple pour :
le transformer en un format compatible avec des algorithmes qui seront utilisés
réduire la complexité temporelle des algorithmes qui seront utilisés
réduire la complexité spatiale du problème traité
découpler des variables et chercher les dépendances
introduire des a priori, ou des propriétés importantes pour les algorithmes (données centrées normées, descripteurs épars…)
permettre une interprétation plus intuitive et/ou graphique (figure 2)
Fig. 3 Exemple de réduction de dimension (source: Maaten & Hinton, 2008). Des images 28\(\times\) 28 de chiffres manuscrits sont représentées par un vecteur de 784 valeurs, puis transformés en vecteurs de \(\mathbb{R}^2\) pour les projeter dans le plan. La méthode utilisée permet d’optimiser la transformation de sorte à ce que les images représentant le même chiffre soient regroupées dans des nuages compacts.#
Deux stratégies peuvent alors être utilisées :
sélectionner un sous-ensemble des variables initiales comme descripteurs des individus
calculer de nouveaux descripteurs à partir des variables initiales.
Nous nous intéressons ici à la première approche, la seconde (extraction de caractéristiques) étant abordée pour une approche linéaire dans le chapitre sur l’analyse en composantes principales.
Remark 12
Les méthodes d’extraction de caractéristiques peuvent être soit linéaires (on recherche des combinaisons linéaires des variables initiales permettant d’optimiser un cerrtain critère), ou non linéaires (on parle également de manifold learning)
Définitions#
La sélection de caractéristiques consiste à choisir parmi les \(d\) descripteurs d’un ensemble d’individus \(\mathbf x_i,i\in[\![1,n]\!]\), un sous-ensemble de \(t<d\) caractéristiques jugées “les plus pertinentes”, les \(d-t\) restantes étant ignorées.
On note \(F = \left (f_1\cdots f_d\right )\) les \(d\) caractéristiques. On note \(Perf\) une fonction qui permet d’évaluer un sous-ensemble de caractéristiques, et on suppose que \(Perf\) atteint son maximum pour le meilleur sous-ensemble de caractéristiques (“le plus pertinent”). Le problème de sélection se formule donc comme un problème d’optimisation
le cardinal \(|\hat{F|}\) de \(\hat{F}\) étant soit contrôlé par l’utilisateur, soit défini par l’algorithme de sélection.
On distingue alors trois stratégies :
\(|\hat{F|}\) est défini par l’utilisateur et l’optimisation s’effectue sur tous les sous-ensembles ayant ce cardinal
On connaît une mesure minimale de performance \(\gamma\) et la sélection recherche le plus petit sous-ensemble \(U\) dont la performance \(Perf(U)\) est supérieure ou égale à \(\gamma\)
On cherche un compromis entre l’amélioration de la performance \(Perf(U)\) et la réduction de la taille du sous ensemble.
La mesure de pertinence d’une caractéristique est donc au centre des algorithmes de sélection. Plusieurs définitions sont possibles, et nous dirons ici qu’une caractéristique \(f_i\) est :
pertinente si son absence entraîne une détérioration significative de la performance de l’algorithme utilisé en aval (classification ou régression)
peu pertinente si elle n’est pas pertinente et s’il existe un sous-ensemble \(U\) tel que la performance de \(U\cup\{f_i\}\) est significativement meilleure que la peformance de \(U\)
non pertinente, si elle ne rentre pas dans les deux premières définitions. En général, ces caractéristiques sont supprimées.
Caractéristiques des méthodes de sélection#
Une méthode de sélection basée sur l’optimisation de \(Perf\) utilise généralement trois étapes. Les deux dernières sont itérées jusqu’à un test d’arrêt.
Initialisation#
L’initialisation consiste à choisir l’ensemble de départ des caractéristiques. Il peut s’agir de l’ensemble vide, de \(F\) tout entier, ou un sous-ensemble quelconque \(U\subset F\).
Exploration des sous-ensembles#
A partir de cette initialisation, les stratégies d’exploration des sous-ensembles de caractéristiques se déclinent en trois catégories :
génération exhaustive : tous les sous-ensembles de caractéristiques sont évalués. Si elle garantit de trouver la valeur optimale, cette méthode n’est que peu applicable dès que \(|F|\) devient important (\(2^{|F|}\) sous-ensembles possibles)
génération heuristique : une génération itérative est effectuée, chaque itération permettant de sélectionner ou de rejeter une ou plusieurs caractéristiques. La génération peut être ascendante (ajout de caractéristiques à partir de l’ensemble vide), descendante (suppression de caractéristiques à partir de \(F\)), ou mixte.
génération stochastique : pour un ensemble de données et une initialisation définie, une stratégie de recherche heuristique retourne toujours le même sous-ensemble, ce qui la rend très sensible au changement de l’ensemble de données. La génération stochastique génère aléatoirement un nombre fini de sous-ensembles de caractéristiques afin de sélectionner le meilleur. La convergence est sous-optimale mais peut s’avérer préférable dans des algorithmes d’apprentissage, par exemple pour éviter le phénomène de surapprentissage.
Evaluation des sous-ensembles#
Filtres#
Le critère d’évaluation utilisé évalue la pertinence d’une caractéristique selon des mesures qui reposent sur les propriétés de données d’apprentissage.
Pour \(n\) exemples \(\mathbf x_i, i\in[\![1,n]\!]\) , on note \(\mathbf x_i=\left (x_{i1} \cdots x_{id} \right )^T\in\mathbb{R}^d\) une donnée d’apprentissage (la \(j^e\) caractéristique \(f_j\) ayant donc pour valeur \(x_{ij}\)) , d’étiquette \(y_i\) (en classification ou régression). Les méthodes de type filtres calculent un score pour évaluer le degré de pertinence de chacune des caractéristiques \(f_i\) , parmi lesquelles on peut citer
Le critère de corrélation, utilisé en classification binaire
où \(\mu_i\) (resp. \(\mu_k\)) est la moyenne de la caractéristique \(f_i\) observée sur \(\mathbf x_1\cdots \mathbf x_n\) (resp. moyenne des étiquettes)
Le critère de Fisher, qui permet de mesurer dans un problème de classification à \(C\) classes le degré de séparabilité des classes à l’aide d’une caractéristique donnée
où \(n_c, \mu_c^i\) et \(\Sigma_c^i\) sont l’effectif, la moyenne et l’écart-type de la caractéristique \(f_i\) dans la classe \(c\)
l’information mutuelle
qui mesure la dépendance entre les distributions de deux populations. Ici \(X\) et \(Y\) sont deux variables aléatoires dont les réalisations sont les valeurs de \(f_i\) et des étiquettes de classes. Les probabilités sont estimées de manière fréquentiste.
Dans l’exemple suivant, on choisit de garder \(|\hat{F|}=2\) descripteurs, en contrôlant la pertinence par l’information mutuelle en classification.
from sklearn.datasets import load_iris
from sklearn.feature_selection import SelectKBest
from sklearn.feature_selection import mutual_info_classif
X, y = load_iris(return_X_y=True)
print("Taille des données avant : ",X.shape)
s = SelectKBest(mutual_info_classif,k=2)
X2 = s.fit_transform(X, y)
print("Taille des données après : ",X2.shape)
print("Variables sélectionnées : ", s.get_support())
Taille des données avant : (150, 4)
Taille des données après : (150, 2)
Variables sélectionnées : [False False True True]
Méthodes enveloppantes#
Le principal inconvénient des approches précédentes est le fait qu’elles ignorent l’influence des caractéristiques sélectionnées sur la performance de l’algorithme à utiliser par la suite. Les méthodes de type enveloppantes (wrappers) évaluent un sous-ensemble de caractéristiques par sa performance de classification en utilisant un algorithme d’apprentissage. Les sous-ensembles de caractéristiques sélectionnés par cette méthode sont bien adaptés à l’algorithme de classification utilisé, mais ils ne sont pas nécessairement pour un autre. De plus, la complexité de l’algorithme d’apprentissage rend ces méthodes coûteuses.
Les principales différences entre les filtres et les méthodes enveloppantes pour la sélection des caractéristiques sont les suivantes :
Les filtres mesurent la pertinence des caractéristiques par leur corrélation avec la variable dépendante, tandis que les méthodes enveloppantes mesurent l’utilité d’un sous-ensemble de caractéristiques en entraînant un modèle sur celles-ci.
Les filtres sont beaucoup plus rapides que les méthodes enveloppantes car elles n’impliquent pas l’apprentissage des modèles. D’un autre côté, les méthodes enveloppantes sont également très coûteuses en termes de calcul.
Les filtres utilisent des méthodes statistiques pour l’évaluation d’un sous-ensemble de caractéristiques, tandis que les méthodes enveloppantes utilisent la validation croisée.
Les filtres peuvent échouer à trouver le meilleur sous-ensemble de caractéristiques dans de nombreuses occasions, mais les méthodes enveloppantes peuvent toujours fournir le meilleur sous-ensemble de caractéristiques.
L’utilisation d’un sous-ensemble de caractéristiques à partir des méthodes enveloppantes amène plus facilement au phénomène de surapprentissage
Remark 13
Les wrappers sélectionnent les caractéristiques en se fondant sur une estimation du risque réel.
Méthodes intégrées#
Les méthodes intégrées incluent la sélection de variables lors du processus d’apprentissage. Un tel mécanisme intégré pour la sélection des caractéristiques peut être trouvé, par exemple, dans les algorithmes de type SVM, AdaBoost ou dans les arbres de décision.
Quelques méthodes de sélection#
Suppression des descripteurs à variance faible#
Une première idée simple consiste à supprimer les descripteurs ayant une faible variance, ces derniers n’étant pas discriminants dans la définition des individus.
from sklearn.feature_selection import VarianceThreshold
from sklearn import datasets
iris = datasets.load_iris()
X = iris.data
y = iris.target
v = VarianceThreshold(threshold=.5)
X2 = v.fit_transform(X)
print("Avant sélection, ",X.shape)
print("Après sélection, ",X2.shape)
print("Variables sélectionnées : ", v.get_support())
Avant sélection, (150, 4)
Après sélection, (150, 3)
Variables sélectionnées : [ True False True True]
Algorithmes de sélection séquentielle#
Les algorithmes SFS (Sequential Forward Selection, Algorithm 1) et SBS (Sequential Backward Selection, Algorithm 1-rouge) ont été les premiers à être proposés. Ils utilisent des approches heuristiques de recherche en partant, pour la première, d’un ensemble de caractéristiques vide et pour la seconde de \(F\) tout entier.
Algorithm 1 (Algorithmes SFS et SBS)
Entrée : \(F = \left (f_1\cdots f_d\right )\), taille de l’ensemble final \(T\)
Sortie : \(\hat{F}\)
\(\hat{F}\leftarrow \emptyset\quad\) (\(\hat{F}\leftarrow F\))
Pour \(i=1\) à \( T\quad\) (\(i=1\) à \(d-T\))
Pour \(j=1\) à \( |{F}|\quad\) (\(j=1\) à \(|\hat{F}|\))
Evaluer \(\{f_j\}\cup \hat{F}\quad\) (\(\hat{F}\setminus \{f_j\}\))
\(f_{max}\) = meilleure caractéristique \(\quad\) (\(f_{min}\)=moins bonne caractéristique)
\(\hat{F}\leftarrow\hat{F}\cup\{f_{max}\}, F=F\setminus f_{max}\quad\) (\(\hat{F}\setminus\hat{F}f_{min}\))
L’étape d’évaluation utilise des données d’apprentissage : une heuristique évalue, sur un critère de performance, l’intérêt d’ajouter (ou de supprimer) le descripteur \(f_i\).
Des variantes autour de ces algorithmes simples ont été proposées depuis et par exemple :
il est possible à chaque itération d’inclure (ou d’exclure) un sous-ensemble de caractéristiques, plutôt qu’une seule (méthodes GSFS et GSBS)
on peut appliquer \(p\) fois SFS puis \(q\) fois SBS, de manière itérative, avec \(p,q\) des paramètres qui peuvent évoluer au cours des itérations (algorithme SFFS et SFBS)
Dans l’exemple suivant, l’heuristique choisie est l’algorithme des 3 plus proches voisins et la mesure de performance sous-jacente est la mesure de validation croisée.
from sklearn.feature_selection import SequentialFeatureSelector
from sklearn.neighbors import KNeighborsClassifier
from sklearn.datasets import load_iris
X, y = load_iris(return_X_y=True)
knn = KNeighborsClassifier(n_neighbors=3)
sfs = SequentialFeatureSelector(knn, n_features_to_select=3)
sfs.fit(X, y)
print("Taille des données avant sélection",X.shape)
print("Taille des données après sélection",sfs.transform(X).shape)
print("Variables sélectionnées : ", sfs.get_support())
Taille des données avant sélection (150, 4)
Taille des données après sélection (150, 3)
Variables sélectionnées : [ True False True True]
Algorithme Focus#
L’algorithme de filtrage Focus (Algorithm 2}) repose sur une recherche exhaustive sur \(F\) pour trouver le sous-ensemble le plus performant de taille optimale.
Algorithm 2 (Algorithme FOCUS)
Entrée : \(A= \{\mathbf x_i=\left (x_{i1} \cdots x_{id} \right )^T\in\mathbb{R}^d,1\leq i\leq n \}\) , taille de l’ensemble final \(T\), seuil \(\epsilon\)
Sortie : \(\hat{F}\)
\(\hat{F}\leftarrow \emptyset\)
Pour \(i=1\) à \( T\)
chaque sous-ensemble \(S_i\) de taille \(i\)
Si Inconsistance(A,\(S_i\))<\(\epsilon\)
\(\hat{F}\leftarrow S_i\)
Retourner \(\hat{F}\)
Algorithme relief#
La méthode relief en classification binaire (Algorithm 3), propose de calculer une mesure globale de la pertinence des caractéristiques en accumulant la différence des distances entre des exemples d’apprentissage choisis aléatoirement et leurs plus proches voisins de la même classe et de l’autre classe.
Algorithm 3 (Algorithme Relief)
Entrée : \(A= \{\mathbf x_i=\left (x_{i1} \cdots x_{id} \right )^T\in\mathbb{R}^d,1\leq i\leq n \}\) , nombre d’itérations \(T\)
Sortie : \(w\in\mathbb{R}^d\) un vecteur de poids des caractéristiques, \(w_i\in[-1,1],i\in[\![1,d]\!]\)
Pour \(i=1\) à \( d\)
\(w_i\leftarrow 0\)
Pour \(i=1\) à \( T\)
Choisir aléatoirement un exemple \(\mathbf x_k\)
Chercher deux plus proches voisins de \(\mathbf x_k\), l’un (\(\mathbf x_p\)) dans sa classe, l’autre (\(\mathbf x_q\)) dans l’autre classe
Pour \(j=1\) à \(d\)
\(w_j\leftarrow w_j+\frac{1}{nT}\left (|x_{kj} -x_{qj}|-|x_{kj} -x_{pj}| \right )\)
Méthode SAC#
L’algorithme SAC (Selection Adaptative de Caractéristiques) construit un ensemble de classifieurs (ou de régresseurs) \((M_1\cdots M_d)\) appris sur chacun des descripteurs et sélectionne les meilleurs par discrimination linéaire de Fisher. Pour ce faire, l’algorithme construit un vecteur dont les éléments sont les performances \(Perf(M_i)\) des modèles \(M_i\), triés par ordre décroissant. Deux moyennes \(m_1(i)\) et \(m_2(i)\) sont calculées, qui représentent les deux moyennes de performance d’apprentissage qui ont une valeur respectivement plus grande (plus petite) que la performance du modèle \(M_i\) :
Deux variances des performances \(v_1^2(i)\) et \( v_2^2(i)\) sont alors calculées à partir de ces moyennes, et le sous-ensemble de caractéristiques sélectionné est celui qui maximise le discriminant de Fisher
Algorithme RFE#
L’algorithme RLE (Recusrive Feature Elimination) trie les descripteurs en analysant, localement, la sensibilité de la performance. Étant donné un prédicteur \(f\) qui attribue des poids aux caractéristiques (par exemple, les coefficients d’un modèle linéaire), l’objectif de l’algorithme est de sélectionner les caractéristiques en considérant de manière récursive des ensembles de caractéristiques de plus en plus petits. Tout d’abord, le prédicteur \(f\) est entraîné sur l’ensemble initial de caractéristiques et l’importance de chaque caractéristique est calculée par un algorithme dédié (critère de Gini, entropie…). Les caractéristiques les moins importantes sont éliminées de l’ensemble actuel de caractéristiques. Cette procédure est répétée de manière récursive sur l’ensemble élagué jusqu’à ce que le nombre souhaité de caractéristiques à sélectionner soit finalement atteint.
from sklearn.feature_selection import RFE
from sklearn.datasets import load_iris
from sklearn.tree import DecisionTreeClassifier
X, y = load_iris(return_X_y=True)
estimator = DecisionTreeClassifier()
s = RFE(estimator, n_features_to_select=2, step=1)
s.fit(X, y)
print("Taille des données avant sélection",X.shape)
print("Variables sélectionnées : ", s.get_support())
print("Classement des variables : ",s.ranking_)
Taille des données avant sélection (150, 4)
Variables sélectionnées : [False False True True]
Classement des variables : [2 3 1 1]
Les méthodes factorielles ont pour but de traiter et visualiser des données multidimensionnelles. La prise en compte simultanée de l’ensemble des variables est un problème difficile, rendu parfois plus simple car l’information apportée par les variables est redondante. Les méthodes factorielles visent alors à exploiter cette redondance pour tenter de remplacer les variables initiales par un nombre réduit de nouvelles variables, conservant au mieux l’information initiale.
Les principales méthodes de ce type incluent l’analyse factorielle des correspondances, l’analyse des correspondances multiples, l’analyse factorielle d’un tableau de distance (pour les tableaux de proximité) ou encore l’analyse factorielle discriminante. Ces méthodes sont proposées en annexe de ce cours.
Nous nous intéressons ici à une méthode de réduction de dimension linéaire sur données quantitatives, l’analyse en composantes principales.
Analyse en composantes principales#
Pour les données quantitatives, l’Analyse en Composantes Principales (ACP) est l’une des méthodes les plus utilisées. Elle considère que les nouvelles variables sont des combinaisons linéaires des variables initiales, non corrélées.

Dans la suite, les données seront des tableaux \(n\times d\) de variables quantitatives, une ligne étant un individu, et les colonnes décrivant les paramètres mesurés. Les observations de \(d\) variables sur \(n\) individus sont donc rassemblées dans une matrice \({\bf X}\in\mathcal{M}_{n,d}(\mathbb{R})\) . On notera \(x^j\) la j-ème variable, identifiée par la j-ème colonne \({\bf X_{\bullet,j}}\) de \({\bf X}\), et \(\mathbf{e_i}\) le i-ème individu (i.e. \({\bf X_{i,\bullet}^T}\)).
Principe de la méthode#
Pré-traitement du tableau#
En analyse en composantes principales, on raisonne souvent sur des variables centrées et/ou réduites.
Données centrées#
Notons \(\mathbf{g} = \left ( \bar{x}^1\cdots \bar{x}^d\right )\) le vecteur des moyennes arithmétiques de chaque variable (centre de gravité) :
\(\mathbf{g}={\bf X^TD\mathbf{1}}\)
où \({\bf D}\) est une matrice diagonale de poids, chaque \(d_{ii}\) donnant l’importance de l’individu \(i\) dans les données (le plus souvent \({\bf D}=\frac{1}{n}{ \mathbb{I}}\)), et \(\mathbf{1}\) est le vecteur de \(\mathbb{R}^n\) dont toutes les composantes sont égales à 1. Le tableau \({\bf Y}={\bf X}-\mathbf{1}\mathbf{g}^T=({ \mathbb{I}}-\mathbf{1}\mathbf{1}^T{\bf D}){\bf X}\) est le tableau centré associé à \({\bf X}\).
Données réduites#
La matrice de variance/covariance des données centrées est égale à \({\bf V} = {\bf X^TDX} - \mathbf{g}\mathbf{g^T} = {\bf Y^TDY}\).
Si on note \({\bf D_{1/\sigma}}\) la matrice diagonale des inverses des écarts-types des variables, alors \({\bf Z}={\bf YD_{1/\sigma}}\) est la matrice des données centrées réduites. La matrice \({\bf R}={\bf D_{1/\sigma}VD_{1/\sigma}}={\bf Z^TDZ}\) est la matrice de corrélation des données et résume la structure des dépendances linéaires entre les \(d\) variables.
Projection des individus sur un sous-espace#
Le principe de la méthode est d’obtenir une représentation approchée du nuage des \(n\) individus dans un sous-espace \(F_k\) de dimension faible. Ceci s’effectue par un mécanisme de projection.
Le choix de l’espace de projection est dicté par le critère suivant, qui revient à déformer le moins possible les distances en projection : le sous-espace de dimension \(k\) recherché est tel que la moyenne des carrés des distances entre projections soit la plus grande possible. En définissant l’inertie d’un nuage de points comme la moyenne pondérée des carrés des distances au centre de gravité, le critère revient alors à maximiser l’inertie du nuage projeté sur \(F_k\).
Soit \({\bf P}\) la projection orthogonale sur \(F_k\). Le nuage de points projeté est associé au tableau \({\bf XP^T}\) puisque chaque individu \(\mathbf{e_i}\) se projette sur \(F_k\) selon un vecteur colonne \(\mathbf{Pe_i}\) ou ligne \(\mathbf{e_i P^T}\).
La matrice de variance du tableau \({\bf XP^T}\) est, dans le cas où les variables sont centrées : \({\bf (XP^T)^TD(XP^T) }= {\bf PVP^T}\). L’inertie du nuage projeté est donc égale à \(Tr({\bf PVP^TM})\), où \({\bf M}\) est une matrice symétrique définie positive de taille \(d\), définissant la distance entre deux individus
\(d^2(\mathbf{e_i},\mathbf{e_j}) = (\mathbf{e_i}-\mathbf{e_j})^T{\bf M}(\mathbf{e_i}-\mathbf{e_j})\)
Mais
\(\begin{eqnarray*} Tr({\bf PVP^TM})&=&Tr({\bf PVMP})\quad \textrm{car }{\bf P^TM}={\bf MP}\\ &=& Tr({\bf VMP^2})\quad \textrm{car }Tr({\bf AB})=Tr({\bf BA})\\ &=&Tr({\bf VMP})\quad \textrm{car } P\textrm{ est une projection} \end{eqnarray*}\)
Le problème posé est donc de trouver la projection \({\bf P}\), de rang \(k\) maximisant \(Tr({\bf VMP})\). La projection \({\bf P}\) réalisant cette optimisation donnera alors \(F_k\).
L’analyse en composantes principales consiste alors, de manière itérative, à chercher un sous-espace de dimension 1 d’inertie maximale, puis le sous-espace de dimension 1 orthogonal au précédent d’inertie maximale et ainsi de suite. Elle s’appuie sur le résultat suivant :
Theorem 12
Soit \(F_k\) un sous-espace portant l’inertie maximale. Alors le sous-espace de dimension \(k+1\) portant l’inertie maximale est la somme directe de \(F_k\) et de la droite orthogonale à \(F_k\) portant l’inertie maximale.
Elements principaux#
Axes principaux#
Rechercher un sous-espace de dimension 1 d’inertie maximale revient à rechercher une droite de \(\mathbb{R}^n\) passant par le centre de gravité des données \(\mathbf{g}\) maximisant l’inertie du nuage projeté sur cet axe. Soit \(\mathbf{a}\) un vecteur directeur de cette droite. La projection orthogonale sur la droite est définie par la matrice de projection
\(\mathbf P=\frac{\mathbf{a}\mathbf{a}^T{\bf M}}{\mathbf{a}^T{\bf M}\mathbf{a}}\)
L’inertie du nuage projeté sur \(Lin(\mathbf{a})\) vaut alors \(\begin{eqnarray*} Tr({\bf VMP})&=&Tr\left ({\bf VM}\frac{\mathbf{a}\mathbf{a}^T{\bf M}}{\mathbf{a}^T{\bf M}\mathbf{a}}\right )\\ &=& \frac{1}{\mathbf{a^T}{\bf M}\mathbf{a}}Tr({\bf VM}\mathbf{a}\mathbf{a^T}{\bf M})\\ &=& \frac{1}{\mathbf{a^T}{\bf M}\mathbf{a}}Tr(\mathbf{a^T}{\bf MVM}\mathbf{a})\quad \text{car } Tr(\mathbf{AB})=Tr(\mathbf{BA})\\ &=& \frac{1}{\mathbf{a^T}{\bf M}\mathbf{a}}\mathbf{a^T}{\bf MVM}\mathbf{a}\quad \text{car } \mathbf{a^T}{\bf MVM}\mathbf{a}\in\mathbb{R} \end{eqnarray*}\)
La matrice \({\bf MVM}\) est la matrice d’inertie du nuage (égale à la matrice de variance-covariance si \({\bf M}=\mathbb I\)). Maximiser cette quantité revient à annuler sa dérivée par rapport à \(\mathbf{a}\) d’où :
\( \frac{d}{d\mathbf{a}}\frac{\mathbf{a^T}{\bf MVM}\mathbf{a}}{\mathbf{a^T}{\bf M}\mathbf{a}}=\frac{(\mathbf{a^T}{\bf M}\mathbf{a})2{\bf MVM}\mathbf{a}-(\mathbf{a^T}{\bf MVM}\mathbf{a})2{\bf M}\mathbf{a}}{(\mathbf{a^T}{\bf M}\mathbf{a})^2} \) et donc
\({\bf MVM}\mathbf{a}=\left (\frac{\mathbf{a^T}{\bf MVM}\mathbf{a}}{\mathbf{a^T}{\bf M}\mathbf{a}} \right ){\bf M}\mathbf{a}\)
soit \({\bf VM}\mathbf{a}=\lambda \mathbf{a}\) car \({\bf M}\) est de rang plein. Donc \(\mathbf{a}\) est vecteur propre de \({\bf VM}\), et \(\lambda\) est la plus grande des valeurs propres de \({\bf VM}\). Or \({\bf M}\) est symétrique, elle est diagonalisable sur une base de vecteurs propres orthonormés et on a le résultat suivant :
Theorem 13
Le sous-espace \(F_k\) de dimension \(k\) portant l’inertie maximale est engendré par les \(k\) premiers vecteurs propres de \({\bf VM}\)
Les droites portées par ces vecteurs propres sont les axes principaux. Dans la suite on supposera \(\mathbf{a}\) \(\mathbf M\)-normé.
Facteurs principaux#
On associe à \(Lin(\mathbf{a})\) la forme linéaire \(\mathbf{u}\), coordonnée orthogonale sur l’axe \(Lin(\mathbf{a})\). Le vecteur \(\mathbf{u}\) définit une combinaison linéaire des variables descriptives \(x^1\cdots x^d\). A l’axe principal \(\mathbf{a}\) est associé le facteur principal \(\mathbf{u}=\mathbf{Ma}\). Puisque \(\mathbf{a}\) est vecteur propre de \({\bf VM}\), on peut alors écrire
\({\bf MVM}\mathbf{a}=\lambda {\bf M}\mathbf{a}\)
et donc \({\bf MV}\mathbf{u}=\lambda \mathbf{u}\). Les facteurs principaux sont donc les vecteurs propres de \({\bf MV}\)
Composantes principales#
Les composantes principales sont les éléments de \(\mathbb{R}^n\) définis par \(\mathbf{c_i}=\mathbf{Xu_i}\). Ce sont donc les vecteurs coordonnées des projections orthogonales des individus sur les axes propres \(\mathbf{a_i}\). Ce sont donc les combinaisons linéaires des \(x^1\cdots x^p\) de variance maximale sous la contrainte \(\mathbf{u_i}^T{\bf M}\mathbf{u_i}=1\), et cette variance est égale à la valeur propre \(\lambda_i\) associée à \(\mathbf{a_i}\).
En pratique, l’analyse en composantes principales consiste à calculer les \(\mathbf{u}\) par diagonalisation de \({\bf MV}\), puis à calculer les \(\mathbf{c}=\mathbf{Xu}\). Le calcul explicite des vecteurs propres \(\mathbf{a}\) n’a que peu d’intérêt.
Reconstitution#
Il est possible de reconstituer le tableau \({\bf X}\) centré des données (ou une approximation par une matrice de rang \(k\)) en utilisant les composantes. En effet, puisque \(\mathbf{Xu_j}=\mathbf{c_j}\) on a
\({\bf X}\displaystyle\sum_j \mathbf{u_j}\mathbf{u_j}^T{\bf M^{-1}} = \displaystyle\sum_j\mathbf{c_j}\mathbf{u_j}^T{\bf M^{-1}}\)
Mais \(\displaystyle\sum_j \mathbf{u_j}\mathbf{u_j}^T{\bf M^{-1}}=\mathbb{I}\) car les \(\mathbf{u_j}\) sont orthonormés pour la métrique \({\bf M^{-1}}\) donc
\({\bf X}=\displaystyle\sum_j\mathbf{c_j}\mathbf{u_j}^T{\bf M^{-1}}\) et si l’on s’intéresse à l’approximation de \({\bf X}\) on ne somme que les \(k\) premiers termes.
A noter que lorsque \({\bf M}=\mathbb{I}, {\bf X}= \displaystyle\sum_j\sqrt{\lambda_j}\mathbf{z_j}\mathbf{v_j^T}\) où les \(\mathbf{z_j}\) sont les vecteurs propres unitaires de \({\bf XX^T}\) et les \(\mathbf{v_j}\) les vecteurs propres unitaires de \({\bf X^TX}\) (décomposition dite en valeurs singulières).
Interprétation des résultats#
Quelle dimension pour \(F_k\) ?#
Le but premier de l’ACP est de réduire la dimension pour permettre une visualisation efficace des données, tout en préservant l’information (ici représentée par la variance du nuage de points). Il faut donc se doter d’outils permettant de répondre à la question : quelle dimension pour \(F_k\) ? Il n’y a pas de réponse théorique satisfaisante, l’essentiel étant d’avoir une représentation suffisamment expressive pour permettre une interprétation correcte du nuage de points. En préambule, il convient de remarquer que la réduction de dimension ne sera possible que si les variables \(x^1\cdots x^d\) ne sont pas indépendantes.
Critère théorique#
On détermine ici si les valeurs propres sont significativement différentes entre elles à partir d’un certain rang : si la réponse est négative on conserve les premières valeurs propres.
On fait l’hypothèse que les \(n\) individus proviennent d’un tirage aléatoire dans une population gaussienne où \(\lambda_{k+1}=\cdots =\lambda_{d}\). Si l’hypothèse est vérifiée, la moyenne arithmétique \(\alpha\) des \(d-k\) dernières valeurs propres et leur moyenne géométrique \(\gamma\) sont peu différentes. On admet que :
\(c=\left ( n-\frac{2p+11}{6}\right )(d-k) ln\frac{\alpha}{\gamma}\) suit une loi du \(\chi^2\) de degré de liberté \(\frac{(d-k+2)(d-k-1)}{2}\) et on rejette l’hypothèse d’égalité des \(d-k\) valeurs propres si \(c\) est trop grand.
Pourcentage d’inertie#
Le critère couramment utilisé est le pourcentage d’inertie totale expliquée, qui s’exprime sur les \(k\) premiers axes par :
Un seuil par exemple de 90% d’inertie totale expliquée donne une valeur de \(k\) correspondante. Attention cependant, le pourcentage d’inertie doit faire intervenir le nombre de variables initiales.

Mesures locales#
Le pourcentage d’inertie expliquée est un critère global qui doit être complété par d’autres considérations. Supposons que le plan \(F_2\) explique une part importante d’inertie, et que, en projection sur ce plan, deux individus soient très proches. Cette proximité peut être illusoire si les deux individus se trouvent éloignés dans l’orthogonal de \(F_2\). Pour prendre en compte ce phénomène, il faut envisager pour chaque individu \(\mathbf{e_i}\) la qualité de sa représentation, souvent exprimée par le cosinus de l’angle entre le plan principal et le vecteur \(\mathbf{e_i}\). Si ce cosinus est grand, \(\mathbf{e_i}\) est voisin du plan, on peut alors examiner la position de sa projection sur le plan par rapport à d’autres points.
Dans la figure suivante, \({\bf e_i} \) et \({\bf e_j}\) se projettent sur \(F_2\) en \({\bf p}\) mais sont éloignés dans \(F_2^\perp\).

Critères empiriques#
Lorsqu’on travaille sur données centrées réduites, on retient les composantes principales correspondant à des valeurs propres supérieures à 1 (critère de Kaiser) : en effet les composantes principales \(c_j\) étant des combinaisons linéaires des \(z-j\) de variance maximale \(V(c_j)=\lambda\), seules les composantes de variance supérieure à celle des variables initiales présentent un intérêt.
Interprétation des résultats : exemple#
Une analyse en composantes principales est réalisée sur un jeu de données composé de \(d\)=9 indicateurs de qualité pour \(n\)=329 villes américaines. Les paragraphes suivants sont illustrés par ces données.
Corrélation variables-facteurs#
Pour donner du sens aux composantes principales \(\mathbf{c}\), il faut les relier aux variables initiales \(x^j\) en calculant les coefficients de corrélation linéaire \(r(\mathbf{c},x^j)\) et en seuillant ces coefficients en valeur absolue.
Lorsque l’on travaille sur des données centrées réduites (métrique \(\mathbf D_{1/\sigma}\)), le calcul de \(r(\mathbf{c},x^j)\) se réduit à
\(r(\mathbf{c},x^j)=\frac{\mathbf{c}^T\mathbf D\mathbf{z^j}}{\sqrt{\lambda}}\)
Or \(\mathbf{c}=Z\mathbf{u}\) où \(\mathbf{u}\), facteur principal associé à \(\mathbf{c}\), est vecteur propre de la matrice de corrélation \(\mathbf R\) associé à \(\lambda\). Donc
\(r(\mathbf{c},x^j)=\frac{\mathbf{u}^T\mathbf Z^T\mathbf D\mathbf{z^j}}{\sqrt{\lambda}}=\frac{(\mathbf{z^j})^T\mathbf D\mathbf Z\mathbf{u}}{\sqrt{\lambda}}\)
\((\mathbf{z^j})^T\mathbf D\mathbf Z\) est la \(j^e\) ligne de \(\mathbf Z^T\mathbf D\mathbf Z=\mathbf R\) donc \((\mathbf{z^j})^T\mathbf D \mathbf Z \mathbf{u}\) est la \(j^e\) composante de \(\mathbf R\mathbf{u}=\lambda \mathbf{u}\) d’où
\(r(\mathbf{c},x^j)=\sqrt{\lambda}u_j\)
Ces calculs s’effectuent pour chaque composante principale. Pour un couple de composantes principales \(\mathbf{c_1}\) et \(\mathbf{c_2}\) par exemple on représente fréquemment les corrélations sur une figure appelée « cercle des corrélations» où chaque variable \(x^j\) est repérée par un point d’abscisse \(r(\mathbf{c_1},x^j)\) et d’ordonnée \(r(\mathbf{c_2},x^j)\).

Remark 14
Attention de ne pas interpréter des proximités entre points variables, si ceux-ci ne sont pas proches de la circonférence.
Notons que dans le cas de la métrique \(D_{1/\sigma}\), le cercle des corrélations est la projection de l’ensemble des variables centrées-réduites sur le sous-espace engendré par \(\mathbf{c_1},\mathbf{c_2}\). En ce sens, le cercle de corrélation est le pendant, dans l’espace des variables, de la projection des individus sur le premier plan principal.
Positionnement des individus#
Dire que \(\mathbf{c_1}\) est très corrélée à \(x^j\) signifie que les individus ayant une forte coordonnée positive sur l’axe 1 sont caractérisés par une valeur de \(x^j\) nettement supérieure à la moyenne.
Il est très utile aussi de calculer pour chaque axe la contribution apportée par les divers individus à cet axe. Si \(c_{ki}\) est la valeur de la composante \(k\) pour le \(i^e\) individu, alors par construction
où \(p_i\) est le poids de l’individu \(i\). On appelle alors contribution de l’individu \(i\) à la composante \(\mathbf{c_k}\) la quantité \(\frac{p_ic_{ki}^2}{\lambda_k}\). Dans le cas où le poids est différent de \(1/n\) (certains individus sont “plus importants” que d’autres), la contribution est riche d’interprétation. Dans le cas contraire, elle n’apporte rien de plus que les coordonnées de l’individu.
On peut alors positionner les individus sur les sous-espaces des premières composantes principales (plans factoriels). La figure suivante présente le positionnement de 329 villes américaines, où les 9 variables de qualité de vie précédentes ont été mesurées. Par soucis de lisibilité, seul les villes qui contribuent le plus à la création de la première composante principale ont leurs noms inscrits.

On peut également superposer les deux informations précédentes pour corréler le positionnement des villes selon les variables originales. La figure suivante présente les 329 villes précédentes, plongées dans \(F_3\), les anciennes variables étant matérialisées par des vecteurs dont la direction et la norme indiquent à quel point chaque variable contribue aux 3 premières composantes principales.

Il n’est pas souhaitable, et ceci surtout pour les premières composantes, qu’un individu ait une contribution excessive car cela serait un facteur d’instabilité, le fait de retirer cet individu modifiant profondément le résultat de l’analyse. Si ce cas se produisait il y aurait intérêt à effectuer l’analyse en éliminant cet individu puis en le mettant en élément supplémentaire, s’il ne s’agit pas d’une donnée erronée qui a été ainsi mise en évidence.
Facteur de taille, facteur de forme#
Le théorème de Frobenius stipule qu’une matrice symétrique n’ayant que des termes positifs admet un premier vecteur propre dont toutes les composantes sont de même signe. Si ce signe est positif, la première composante est alors corrélée positivement avec toutes les variables et les individus sont rangés sur l’axe 1 par valeurs croissantes de l’ensemble des variables. Si de plus les corrélations entre variables sont du même ordre de grandeur, la première composante principale est proportionnelle à la moyenne des variables initiales. Cette première composante définit alors un facteur de taille.
La deuxième composante principale différencie alors des individus de “taille” semblable, on l’appelle souvent facteur de forme.
Ajout de variable et ou d’individu#
Toutes les interprétations précédentes expliquent les résultats à l’aide des données initiales, qui ont permis de les calculer. On risque alors de prendre pour une propriété intrinsèque des données un simple artefact de la méthode (par exemple il existe de fortes corrélations entre la première composante principale et certaines variables, puisque \(\mathbf{c_1}\) maximise \(\sum_j r^2(\mathbf{c},x^j)\)).
En revanche une forte corrélation entre une composante principale et une variable qui n’a pas servi à l’analyse sera significative. D’où la pratique courante de partager en deux groupes l’ensemble des variables : d’une part les variables actives qui servent à déterminer les axes principaux, d’autre part les variables passives ou supplémentaires que l’on relie a posteriori aux composantes principales. On distingue alors les variables supplémentaires suivant leur type, numérique (à placer dans les cercles de corrélation) ou qualitative (donnée d’une partition des \(n\) individus en \(k\) classes).
Pour résumer#
from IPython.display import Video
Video("videos/ACP.mp4",embed =True,width=800)

